久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

SDN实验---Ryu的应用开发(一)Hub实现

發布時間:2023/12/19 综合教程 44 生活家
生活随笔 收集整理的這篇文章主要介紹了 SDN实验---Ryu的应用开发(一)Hub实现 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

補充:

(一)Ubuntu下安裝Notepadqq

背景:為什么安裝Notepadqq

Notepad++ 不僅有語法高亮度顯示,也有語法折疊功能,并且支持宏以及擴充基本功能的外掛模組。
但是可惜的是Notepad++只能在Windows平臺下使用。 工作中必須使用Windows時,Notepad++是眾多程序員最喜愛的文本編輯器,
在Ubuntu下是否能夠使用到相同的軟件呢?
Notepadqq就是這樣一款與Notepad++非常接近的編輯器,擁有幾乎相同的功能。

安裝:

sudo add-apt-repository ppa:notepadqq-team/notepadqq
sudo apt-get update
sudo apt-get install notepadqq

安裝(2):

snap install --classic notepadqq

補充:什么是snap軟件包?

卸載:

sudo apt-get remove notepadqq
sudo add-apt-repository --remove ppa:notepadqq-team/notepadqq

(二)Ubuntu下安裝sublime

優點:

一流的Git集成
增量差異功能可跟蹤正在編輯的文件的更改。
移動到GTK3,以及針對Linux的各種高DPI修復。
新的主題功能和塊插入支持。
支持Unicode 11.0
對代碼塊(block caret)的支持
語法高亮增加對 Clojure, D, Go, Lua 語言的支持

安裝:

1.由于最近下載速度太慢:http://pan.baidu.com/s/1kURLcZt 密碼: acm6

2.進行安裝:sudo dpkg -i sublime-text_build-3126_amd64.deb

3.安裝package control以及Anaconda插件https://www.jianshu.com/p/36df65bc78f9

卸載編輯器

sudo apt remove --autoremove sublime-text

零:如何編程

一:Hub/集線器(編程思路)《重點》

(一)明確問題

如何實現軟件定義的集線器?

(二)設計解決方案

通過控制器來實現集線器算法(泛洪),然后知道數據平面實現集線器操作

(三)確定具體的技術方案

控制器選用Ryu,數據平面通過Mininet模擬

(四)部署實施

在控制器上編程開發集線器應用,創建實驗網絡為驗證方案做準備

(五)驗證方案

運行程序,調試程序,驗證程序

(六)優化

驗證成功后,優化程序

二:集線器原理---設計解決方案

一個數據包從port1進入,會被復制,泛洪轉發到其他所有端口發出

三:部署實施---Ryu控制器API學習和使用(Hub集線器開發)

(一)代碼實現

from ryu.base import app_manager
from ryu.ofproto import ofproto_v1_3
from ryu.controller import ofp_event
from ryu.controller.handler import MAIN_DISPATCHER,CONFIG_DISPATCHER
from ryu.controller.handler import set_ev_cls


class Hub(app_manager.RyuApp):
    OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]

    def __init__(self,*args,**kwargs):
        super(Hub,self).__init__(*args,**kwargs)

    
    @set_ev_cls(ofp_event.EventOFPSwitchFeatures,CONFIG_DISPATCHER)
    def switch_features_handler(self,ev):
        datapath = ev.msg.datapath
        ofproto = datapath.ofproto
        ofp_parser = datapath.ofproto_parser

        match = ofp_parser.OFPMatch()
        actions = [ofp_parser.OFPActionOutput(ofproto.OFPP_CONTROLLER,ofproto.OFPCML_NO_BUFFER)]

        self.add_flow(datapath,0,match,actions,"default flow entry")

    def add_flow(self,datapath,priority,match,actions,remind_content):
        ofproto = datapath.ofproto
        ofp_parser = datapath.ofproto_parser

        inst = [ofp_parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS,
                                             actions)]

        mod = ofp_parser.OFPFlowMod(datapath=datapath,priority=priority,
                                    match=match,instructions=inst);
        print("install to datapath,"+remind_content)
        datapath.send_msg(mod);


    @set_ev_cls(ofp_event.EventOFPPacketIn,MAIN_DISPATCHER)
    def packet_in_handler(self,ev):
        msg = ev.msg
        datapath = msg.datapath
        ofproto = datapath.ofproto
        ofp_parser = datapath.ofproto_parser

        in_port = msg.match['in_port']

        print("get packet in, install flow entry,and lookback parket to datapath")
        
        match = ofp_parser.OFPMatch();
        actions = [ofp_parser.OFPActionOutput(ofproto.OFPP_FLOOD)]

        self.add_flow(datapath,1,match,actions,"hub flow entry")

        out = ofp_parser.OFPPacketOut(datapath=datapath,buffer_id=msg.buffer_id,
                                            in_port=in_port,actions=actions)    

        datapath.send_msg(out);
注意:注釋可能為你帶來不少錯誤...盡可能寫兩個版本,一個不帶注釋,用于調試。一個寫注釋,用于學習,回顧

(二)啟動控制器

ryu-manager hub.py --verbose  #進入目錄,在hub.py文件目錄下  --verbose顯示調試信息

(二)啟動Mininet進行連接測試

sudo mn --topo=linear,4 --controller=remote

Ryu控制器端響應:(注意:啟動mininet后,再先關閉Ryu,重新進入,測試效果更好)

openvswitch交換機與Ryu控制器連接,控制器下發默認流表,提示信息install to datapath,default flow entry

(三)使用pingall命令,使得主機向交換機發送數據包---從而實現交換機上傳數據包到控制器,實現流表獲取

獲取提示信息get packet in, install flow entry,and lookback parket to datapath

四: Hub代碼講解(注釋版)

from ryu.base import app_manager
from ryu.ofproto import ofproto_v1_3
from ryu.controller import ofp_event
from ryu.controller.handler import MAIN_DISPATCHER,CONFIG_DISPATCHER
from ryu.controller.handler import set_ev_cls


class Hub(app_manager.RyuApp):
    '''明確控制器所用OpenFlow版本'''
    OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION]

    def __init__(self,*args,**kwargs):
        super(Hub,self).__init__(*args,**kwargs)

    
    @set_ev_cls(ofp_event.EventOFPSwitchFeatures,CONFIG_DISPATCHER)
    def switch_features_handler(self,ev):
        '''
        在Ryu控制器上,我們需要寫一個函數去處理openvswitch的連接
        CONFIG_DISPATCHER : Version negotiated and sent features-request message
        '''
        #對事件進行解析
        datapath = ev.msg.datapath    #從連接中獲取數據平面的datapath數據結構
        ofproto = datapath.ofproto    #獲取OpenFlow協議信息
        ofp_parser = datapath.ofproto_parser    #獲取協議解析
        #解析完成

   '''在連接建立成功以后,需要控制器下發一個默認流表
           來指揮所有匹配不到交換機的數據,把他上傳到控制器上
        '''

        #install the table-miss flow entry

        match = ofp_parser.OFPMatch()        #匹配域
        
        #OFPActionOutput將數據包發送出去,
        #第一個參數OFPP_CONTROLLER是接收端口,
        #第二個是數據包在交換機上緩存buffer_id,由于我們將數據包全部傳送到控制器,所以不在交換機上緩存
        actions = [ofp_parser.OFPActionOutput(ofproto.OFPP_CONTROLLER,ofproto.OFPCML_NO_BUFFER)]

        self.add_flow(datapath,0,match,actions,"default flow entry")    #默認缺省流表項,設置優先級最低即可
'''
    數據平面    是由若干網元(Network Element)組成,每個網元包含一個或多個SDN數據路徑(SDN Datapath)。
    SDN Datapath是邏輯上的網絡設備,負責轉發和處理數據無控制能力,
    一個SDN DataPath包含控制數據平面接口(Control Data Plane Interface,CDPI)、代理、轉發引擎(Forwarding Engine)表和處理功能(Processing Function) 
    SDN數據面(轉發面)的關鍵技術:對數據面進行抽象建模。
    '''
    def add_flow(self,datapath,priority,match,actions,remind_content):
        '''構建流表項 : add a flow entry, install it into datapath
        datapath:表示給哪一個邏輯設備下發流表
        priority:表示優先級
        match,actions:匹配域和動作
        '''

        #datapath屬性        
        ofproto = datapath.ofproto
        ofp_parser = datapath.ofproto_parser

        #在OpenFlow1.3版本中定義了instruct指令集(交換機內部的一些操作)
        #construct a flow msg and send it
        inst = [ofp_parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS,
                                             actions)]

        mod = ofp_parser.OFPFlowMod(datapath=datapath,priority=priority,
                                    match=match,instructions=inst);
        print("install to datapath,"+remind_content)
        #發送出去
        datapath.send_msg(mod);

        
'''接收數據
        Ryu控制器通過裝飾器去注冊監聽某些事件,去處理這些事件。
        從而實現從數據平面的消息上傳到控制器,再從控制器平面到應用平面,應用程序去處理事件,再逐跳返回到openvswitch
    '''

    '''要處理這個事件,需要先去注冊監聽他
    EventOFPPacketIn: 是我們要監聽的事件
    MAIN_DISPATCHER : 是什么狀態下,去監聽該事件---Switch-features message received and sent set-config message
    '''
    @set_ev_cls(ofp_event.EventOFPPacketIn,MAIN_DISPATCHER)
    def packet_in_handler(self,ev):
        '''Hub集線器類,所實現的功能:
        1.接收從OpenVSwitch發送過來的數據包
        2.將數據包泛洪到Hub中的其他端口中
        '''    

        #解析數據結構
        msg = ev.msg
        datapath = msg.datapath
        ofproto = datapath.ofproto
        ofp_parser = datapath.ofproto_parser

        in_port = msg.match['in_port']        #獲取源端口

        print("get packet in, install flow entry,and lookback parket to datapath")
        
        match = ofp_parser.OFPMatch();        #因為我們是將所有轉發,所以不用管匹配,填空表示全部匹配
        actions = [ofp_parser.OFPActionOutput(ofproto.OFPP_FLOOD)]  #注意:FLOOD是OpenFlow協議保留端口---泛洪使用

        #調用add_flow,將流表項發送    ,指導后續數據包轉發    install flwo entry to avoid packet in next time
        self.add_flow(datapath,1,match,actions,"hub flow entry")    #等級稍微比默認流表項高級

        #注意:我們將流表項下發了,但是數據包我們這次接收的,并沒有處理
        #就是再將控制器上的數據包,重新發送給datapath,讓他按照流表項處理
        #buffer_id是這個數據包,存放在控制器中的緩沖區位置,是在事件中的buffer_id獲取
        out = ofp_parser.OFPPacketOut(datapath=datapath,buffer_id=msg.buffer_id,
                                            in_port=in_port,actions=actions,data=msg.data)    

        datapath.send_msg(out);

通信流程:《重點》

1.當開始一個Hub集線器時,會先與控制器進行連接,我們需要在Ryu中設置函數去處理連接,設置并下發默認流表---------函數switch_features_handler實現

2.當主機之間通信時,主機上傳信息到OpenVSwitch交換機,而交換機無法匹配到流表項時,我們設置將數據全部上傳給Ryu控制器,我們在控制器端實現Hub集線器的泛洪功能,即設置流表項(match-actions為所有匹配數據包的動作為ofproto.OFPP_FLOOD,并且將該流變下發給原來datapath,同時我們要將之前交換機發送過來的數據包重新發送給交換機(讓其按照新的流表項進行處理)--------函數packet_in_handler實現

3.我們將公共函數add_flow,構建流表項并且下發流表提出

五:實現整體程序運行了解《重點》

(一)程序入口在哪?------app_manager.RyuApp

    """
    The base class for Ryu applications.

    RyuApp subclasses are instantiated after ryu-manager loaded
    all requested Ryu application modules.
    __init__ should call RyuApp.__init__ with the same arguments.
    It's illegal to send any events in __init__.

    The instance attribute 'name' is the name of the class used for
    message routing among Ryu applications.  (Cf. send_event)
    It's set to __class__.__name__ by RyuApp.__init__.
    It's discouraged for subclasses to override this.
    """

1.app_manager.RyuApp是所有Ryu Applications的基類,我們要實現一個控制器應用,必須繼承該基類

2.我們自定義的子類(繼承于RyuAPP的子類),將在ryu-manager命令加載中被實例化(它是在ryu管理器加載所有請求的ryu應用程序模塊后實例化的)

即我們執行ryu-manager hub.py --verbose命令開啟Ryu控制器時,并且處理了所有請求的ryu應用程序模塊,之后Hub子類就被實例化了

3.子類中的__init__方法需要調用父類的__init__方法,并且保持參數一致

    def __init__(self,*args,**kwargs):
        super(Hub,self).__init__(*args,**kwargs)

(二)設置OpenFlow協議---OFP_VERSIONS

    OFP_VERSIONS = None
    """
    A list of supported OpenFlow versions for this RyuApp.
    The default is all versions supported by the framework.

    Examples::

        OFP_VERSIONS = [ofproto_v1_0.OFP_VERSION,
                        ofproto_v1_2.OFP_VERSION]

    If multiple Ryu applications are loaded in the system,
    the intersection of their OFP_VERSIONS is used.
    """

我們設置的協議類型是1.3版本OFP_VERSIONS = [ofproto_v1_3.OFP_VERSION],其中協議在 from ryu.ofproto import ofproto_v1_3 中

(三)事件監聽----裝飾器實現set_ev_cls

1.from ryu.controller.handler import set_ev_cls

# should be named something like 'observe_event'
def set_ev_cls(ev_cls, dispatchers=None):
    """
    A decorator for Ryu application to declare an event handler.

    Decorated method will become an event handler.
    ev_cls is an event class whose instances this RyuApp wants to receive.
    dispatchers argument specifies one of the following negotiation phases
    (or a list of them) for which events should be generated for this handler.
    Note that, in case an event changes the phase, the phase before the change
    is used to check the interest.

    .. tabularcolumns:: |l|L|

    =========================================== ===============================
    Negotiation phase                           Description
    =========================================== ===============================
    ryu.controller.handler.HANDSHAKE_DISPATCHER Sending and waiting for hello
                                                message
    ryu.controller.handler.CONFIG_DISPATCHER    Version negotiated and sent
                                                features-request message
    ryu.controller.handler.MAIN_DISPATCHER      Switch-features message
                                                received and sent set-config
                                                message
    ryu.controller.handler.DEAD_DISPATCHER      Disconnect from the peer.  Or
                                                disconnecting due to some
                                                unrecoverable errors.
    =========================================== ===============================
    """
    def _set_ev_cls_dec(handler):
        if 'callers' not in dir(handler):
            handler.callers = {}
        for e in _listify(ev_cls):
            handler.callers[e] = _Caller(_listify(dispatchers), e.__module__)
        return handler
    return _set_ev_cls_dec

2.被set_ev_cls裝飾的函數將成為一個事件處理器,參數ev_cls是一個事件類,在controller下的ofp_event下(未找到....動態創建類type實現??),dispatchers參數是事件的協商階段

@set_ev_cls(ofp_event.EventOFPSwitchFeatures,CONFIG_DISPATCHER)  

(1)協商階段

    =========================================== ===============================
    Negotiation phase                           Description
    =========================================== ===============================
    ryu.controller.handler.HANDSHAKE_DISPATCHER Sending and waiting for hello  
                                                message
    ryu.controller.handler.CONFIG_DISPATCHER    Version negotiated and sent
                                                features-request message
    ryu.controller.handler.MAIN_DISPATCHER      Switch-features message
                                                received and sent set-config
                                                message
    ryu.controller.handler.DEAD_DISPATCHER      Disconnect from the peer.  Or
                                                disconnecting due to some
                                                unrecoverable errors.
    =========================================== ===============================

發送并等待Hello消息

雙方通過握手消息Hello建立安全連接

版本協商并發送功能請求消息

雙方建立TLS隧道后,方法發送hello消息進行版本協商
如果協議版本協商成功,則連接建立。否則發送Error消息描述協商失敗原因,并終止連接

交換機特征消息接收和發送設置配置消息

協商完成后,控制器和交換機之間發送Features消息,獲取交換機參數
參數包括支持的buffer數目、流表數、Actions等
控制器發送SET_CONFIG消息向交換機發送配置參數
通過GET_CONFIG消息得到交換機修改后的配置信息
控制器與OpenFlow交換機之間,發送PACKET_OUT和PACKET_IN消息。通過PACKET_OUT中內置的LLDP包進行網絡拓撲的探測
控制器通過FLOW_MOD向控制器下發流表操作

斷開與對等方的連接?;蛘哂捎谝恍┎豢苫謴偷腻e誤而斷開連接

3.裝飾器實現代碼

def set_ev_cls(ev_cls, dispatchers=None):
    def _set_ev_cls_dec(handler):
        if 'callers' not in dir(handler):
            handler.callers = {}
        for e in _listify(ev_cls):
            handler.callers[e] = _Caller(_listify(dispatchers), e.__module__)
        return handler
    return _set_ev_cls_dec
外部函數是用來接收事件處理函數和函數參數

內聯函數是用來
@set_ev_cls(ofp_event.EventOFPSwitchFeatures,CONFIG_DISPATCHER)
def switch_features_handler(self,ev):

(四)協議解析

1.def switch_features_handler(self,ev):自定義函數參數中ev

get ev info:
<ryu.controller.ofp_event.EventOFPSwitchFeatures object at 0x7f659220f668>  就是我們監聽的事件類實例
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__',
'msg', 'timestamp']

2.查看事件中的msg類信息

EVENT ofp_event->Hub EventOFPPacketIn
version=0x4,
msg_type=0xa,
msg_len=0x80,
xid=0x0,
OFPPacketIn(
  buffer_id=4294967295,
  cookie=0,
  data=b'33xffx9axd7xb1x1ajxffx9axd7xb1x86xdd`x00x00x00x00 :xffx00x00x00x00x00x00x00x00x00x00x00x00x00x00x00x00xffx02x00x00x00x00x00x00x00x00x00x01xffx9axd7xb1x87x00~fx00x00x00x00xfex80x00x00x00x00x00x00x18jxffxffxfex9axd7xb1x0ex01x1cxddVxffxb4xd8',
  match=OFPMatch(oxm_fields={'in_port': 2}),
  reason=0,
  table_id=0,
  total_len=86)
['_TYPE', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_base_attributes', '_class_prefixes', '_class_suffixes', '_decode_value', '_encode_value', '_get_decoder', '_get_default_decoder', '_get_default_encoder', '_get_encoder', '_get_type', '_is_class', '_opt_attributes', '_reserved', '_restore_args', '_serialize_body', '_serialize_header', '_serialize_pre', 

'auxiliary_id', 'buf', 'capabilities', 'cls_from_jsondict_key', 'cls_msg_type', 'datapath', 'datapath_id', 'from_jsondict', 'msg_len', 'msg_type', 'n_buffers', 'n_tables', 'obj_from_jsondict', 'parser', 'serialize', 'set_buf', 'set_classes', 'set_headers', 'set_xid', 'stringify_attrs', 'to_jsondict', 'version', 'xid']
msg所提供的方法和屬性

'auxiliary_id', 'buf', 'capabilities', 'cls_from_jsondict_key', 'cls_msg_type', 

'datapath', 'datapath_id',

'from_jsondict', 'msg_len', 'msg_type', 'n_buffers', 'n_tables',

'obj_from_jsondict', 'parser', 'serialize',

'set_buf', 'set_classes', 'set_headers', 'set_xid',

'stringify_attrs', 'to_jsondict', 'version', 'xid']

3.獲取邏輯設備datapath類信息

<ryu.controller.controller.Datapath object at 0x7fe1560c6048>
['__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_close_write', '_echo_request_loop', '_ports', '_recv_loop', '_send_loop', '_send_q_sem', 

'acknowledge_echo_reply', 'address', 'close', 'echo_request_interval', 'flow_format',

'id', 'is_active', 'is_reserved_port', 'max_unreplied_echo_requests', 'ofp_brick', 'ofproto', 'ofproto_parser',

'ports', 'send',

'send_barrier', 'send_delete_all_flows', 'send_flow_del', 'send_flow_mod', 'send_msg', 'send_nxt_set_flow_format', 'send_packet_out', 'send_q',

'serve', 'set_state', 'set_version', 'set_xid', 'socket', 'state', 'supported_ofp_version', 'unreplied_echo_requests', 'xid']

4.獲取邏輯設備datapath中OpenFlow協議信息

<module 'ryu.ofproto.ofproto_v1_3' from '/usr/local/lib/python3.6/dist-packages/ryu/ofproto/ofproto_v1_3.py'>

['DESC_STR_LEN', 'DESC_STR_LEN_STR', 'MAX_XID', 'OFPAT_COPY_TTL_IN', 'OFPAT_COPY_TTL_OUT', 'OFPAT_DEC_MPLS_TTL', 'OFPAT_DEC_NW_TTL', 'OFPAT_EXPERIMENTER', 'OFPAT_GROUP', 'OFPAT_OUTPUT', 'OFPAT_POP_MPLS', 'OFPAT_POP_PBB', 'OFPAT_POP_VLAN', 'OFPAT_PUSH_MPLS', 'OFPAT_PUSH_PBB', 'OFPAT_PUSH_VLAN', 'OFPAT_SET_FIELD', 'OFPAT_SET_MPLS_TTL', 'OFPAT_SET_NW_TTL', 'OFPAT_SET_QUEUE', 'OFPBAC_BAD_ARGUMENT', 'OFPBAC_BAD_EXPERIMENTER', 'OFPBAC_BAD_EXP_TYPE', 'OFPBAC_BAD_LEN', 'OFPBAC_BAD_OUT_GROUP', 'OFPBAC_BAD_OUT_PORT', 'OFPBAC_BAD_QUEUE', 'OFPBAC_BAD_SET_ARGUMENT', 'OFPBAC_BAD_SET_LEN', 'OFPBAC_BAD_SET_TYPE', 'OFPBAC_BAD_TAG', 'OFPBAC_BAD_TYPE', 'OFPBAC_EPERM', 'OFPBAC_MATCH_INCONSISTENT', 'OFPBAC_TOO_MANY', 'OFPBAC_UNSUPPORTED_ORDER', 'OFPBIC_BAD_EXPERIMENTER', 'OFPBIC_BAD_EXP_TYPE', 'OFPBIC_BAD_LEN', 'OFPBIC_BAD_TABLE_ID', 'OFPBIC_EPERM', 'OFPBIC_UNKNOWN_INST', 'OFPBIC_UNSUP_INST', 'OFPBIC_UNSUP_METADATA', 'OFPBIC_UNSUP_METADATA_MASK', 'OFPBMC_BAD_DL_ADDR_MASK', 'OFPBMC_BAD_FIELD', 'OFPBMC_BAD_LEN', 'OFPBMC_BAD_MASK', 'OFPBMC_BAD_NW_ADDR_MASK', 'OFPBMC_BAD_PREREQ', 'OFPBMC_BAD_TAG', 'OFPBMC_BAD_TYPE', 'OFPBMC_BAD_VALUE', 'OFPBMC_BAD_WILDCARDS', 'OFPBMC_DUP_FIELD', 'OFPBMC_EPERM', 'OFPBRC_BAD_EXPERIMENTER', 'OFPBRC_BAD_EXP_TYPE', 'OFPBRC_BAD_LEN', 'OFPBRC_BAD_MULTIPART', 'OFPBRC_BAD_PACKET', 'OFPBRC_BAD_PORT', 'OFPBRC_BAD_TABLE_ID', 'OFPBRC_BAD_TYPE', 'OFPBRC_BAD_VERSION', 'OFPBRC_BUFFER_EMPTY', 'OFPBRC_BUFFER_UNKNOWN', 'OFPBRC_EPERM', 'OFPBRC_IS_SLAVE', 'OFPBRC_MULTIPART_BUFFER_OVERFLOW', 'OFPCML_MAX', 'OFPCML_NO_BUFFER', 'OFPCR_ROLE_EQUAL', 'OFPCR_ROLE_MASTER', 'OFPCR_ROLE_NOCHANGE', 'OFPCR_ROLE_SLAVE', 'OFPC_FLOW_STATS', 'OFPC_FRAG_DROP', 'OFPC_FRAG_MASK', 'OFPC_FRAG_NORMAL', 'OFPC_FRAG_REASM', 'OFPC_GROUP_STATS', 'OFPC_IP_REASM', 'OFPC_PORT_BLOCKED', 'OFPC_PORT_STATS', 'OFPC_QUEUE_STATS', 'OFPC_TABLE_STATS', 'OFPET_BAD_ACTION', 'OFPET_BAD_INSTRUCTION', 'OFPET_BAD_MATCH', 'OFPET_BAD_REQUEST', 'OFPET_EXPERIMENTER', 'OFPET_FLOW_MOD_FAILED', 'OFPET_GROUP_MOD_FAILED', 'OFPET_HELLO_FAILED', 'OFPET_METER_MOD_FAILED', 'OFPET_PORT_MOD_FAILED', 'OFPET_QUEUE_OP_FAILED', 'OFPET_ROLE_REQUEST_FAILED', 'OFPET_SWITCH_CONFIG_FAILED', 'OFPET_TABLE_FEATURES_FAILED', 'OFPET_TABLE_MOD_FAILED', 'OFPFC_ADD', 'OFPFC_DELETE', 'OFPFC_DELETE_STRICT', 'OFPFC_MODIFY', 'OFPFC_MODIFY_STRICT', 'OFPFF_CHECK_OVERLAP', 'OFPFF_NO_BYT_COUNTS', 'OFPFF_NO_PKT_COUNTS', 'OFPFF_RESET_COUNTS', 'OFPFF_SEND_FLOW_REM', 'OFPFMFC_BAD_COMMAND', 'OFPFMFC_BAD_FLAGS', 'OFPFMFC_BAD_TABLE_ID', 'OFPFMFC_BAD_TIMEOUT', 'OFPFMFC_EPERM', 'OFPFMFC_OVERLAP', 'OFPFMFC_TABLE_FULL', 'OFPFMFC_UNKNOWN', 'OFPGC_ADD', 'OFPGC_DELETE', 'OFPGC_MODIFY', 'OFPGFC_CHAINING', 'OFPGFC_CHAINING_CHECKS', 'OFPGFC_SELECT_LIVENESS', 'OFPGFC_SELECT_WEIGHT', 'OFPGMFC_BAD_BUCKET', 'OFPGMFC_BAD_COMMAND', 'OFPGMFC_BAD_TYPE', 'OFPGMFC_BAD_WATCH', 'OFPGMFC_CHAINED_GROUP', 'OFPGMFC_CHAINING_UNSUPPORTED', 'OFPGMFC_EPERM', 'OFPGMFC_GROUP_EXISTS', 'OFPGMFC_INVALID_GROUP', 'OFPGMFC_LOOP', 'OFPGMFC_OUT_OF_BUCKETS', 'OFPGMFC_OUT_OF_GROUPS', 'OFPGMFC_UNKNOWN_GROUP', 'OFPGMFC_WATCH_UNSUPPORTED', 'OFPGMFC_WEIGHT_UNSUPPORTED', 'OFPGT_ALL', 'OFPGT_FF', 'OFPGT_INDIRECT', 'OFPGT_SELECT', 'OFPG_ALL', 'OFPG_ANY', 'OFPG_MAX', 'OFPHET_VERSIONBITMAP', 'OFPHFC_EPERM', 'OFPHFC_INCOMPATIBLE', 'OFPIEH_AUTH', 'OFPIEH_DEST', 'OFPIEH_ESP', 'OFPIEH_FRAG', 'OFPIEH_HOP', 'OFPIEH_NONEXT', 'OFPIEH_ROUTER', 'OFPIEH_UNREP', 'OFPIEH_UNSEQ', 'OFPIT_APPLY_ACTIONS', 'OFPIT_CLEAR_ACTIONS', 'OFPIT_EXPERIMENTER', 'OFPIT_GOTO_TABLE', 'OFPIT_METER', 'OFPIT_WRITE_ACTIONS', 'OFPIT_WRITE_METADATA', 'OFPMBT_DROP', 'OFPMBT_DSCP_REMARK', 'OFPMBT_EXPERIMENTER', 'OFPMC_ADD', 'OFPMC_DELETE', 'OFPMC_MODIFY', 'OFPMF_BURST', 'OFPMF_KBPS', 'OFPMF_PKTPS', 'OFPMF_STATS', 'OFPMMFC_BAD_BAND', 'OFPMMFC_BAD_BAND_VALUE', 'OFPMMFC_BAD_BURST', 'OFPMMFC_BAD_COMMAND', 'OFPMMFC_BAD_FLAGS', 'OFPMMFC_BAD_RATE', 'OFPMMFC_INVALID_METER', 'OFPMMFC_METER_EXISTS', 'OFPMMFC_OUT_OF_BANDS', 'OFPMMFC_OUT_OF_METERS', 'OFPMMFC_UNKNOWN', 'OFPMMFC_UNKNOWN_METER', 'OFPMPF_REPLY_MORE', 'OFPMPF_REQ_MORE', 'OFPMP_AGGREGATE', 'OFPMP_DESC', 'OFPMP_EXPERIMENTER', 'OFPMP_FLOW', 'OFPMP_GROUP', 'OFPMP_GROUP_DESC', 'OFPMP_GROUP_FEATURES', 'OFPMP_METER', 'OFPMP_METER_CONFIG', 'OFPMP_METER_FEATURES', 'OFPMP_PORT_DESC', 'OFPMP_PORT_STATS', 'OFPMP_QUEUE', 'OFPMP_TABLE', 'OFPMP_TABLE_FEATURES', 'OFPMT_OXM', 'OFPMT_STANDARD', 'OFPM_ALL', 'OFPM_CONTROLLER', 'OFPM_MAX', 'OFPM_SLOWPATH', 'OFPPC_NO_FWD', 'OFPPC_NO_PACKET_IN', 'OFPPC_NO_RECV', 'OFPPC_PORT_DOWN', 'OFPPF_100GB_FD', 'OFPPF_100MB_FD', 'OFPPF_100MB_HD', 'OFPPF_10GB_FD', 'OFPPF_10MB_FD', 'OFPPF_10MB_HD', 'OFPPF_1GB_FD', 'OFPPF_1GB_HD', 'OFPPF_1TB_FD', 'OFPPF_40GB_FD', 'OFPPF_AUTONEG', 'OFPPF_COPPER', 'OFPPF_FIBER', 'OFPPF_OTHER', 'OFPPF_PAUSE', 'OFPPF_PAUSE_ASYM', 'OFPPMFC_BAD_ADVERTISE', 'OFPPMFC_BAD_CONFIG', 'OFPPMFC_BAD_HW_ADDR', 'OFPPMFC_BAD_PORT', 'OFPPMFC_EPERM', 'OFPPR_ADD', 'OFPPR_DELETE', 'OFPPR_MODIFY', 'OFPPS_BLOCKED', 'OFPPS_LINK_DOWN', 'OFPPS_LIVE', 'OFPP_ALL', 'OFPP_ANY', 'OFPP_CONTROLLER', 'OFPP_FLOOD', 'OFPP_IN_PORT', 'OFPP_LOCAL', 'OFPP_MAX', 'OFPP_NORMAL', 'OFPP_TABLE', 'OFPQCFC_EPERM', 'OFPQOFC_BAD_PORT', 'OFPQOFC_BAD_QUEUE', 'OFPQOFC_EPERM', 'OFPQT_EXPERIMENTER', 'OFPQT_MAX_RATE', 'OFPQT_MIN_RATE', 'OFPQ_ALL', 'OFPRRFC_BAD_ROLE', 'OFPRRFC_STALE', 'OFPRRFC_UNSUP', 'OFPRR_DELETE', 'OFPRR_GROUP_DELETE', 'OFPRR_HARD_TIMEOUT', 'OFPRR_IDLE_TIMEOUT', 'OFPR_ACTION', 'OFPR_INVALID_TTL', 'OFPR_NO_MATCH', 'OFPSCFC_BAD_FLAGS', 'OFPSCFC_BAD_LEN', 'OFPSCFC_EPERM', 'OFPTFFC_BAD_ARGUMENT', 'OFPTFFC_BAD_LEN', 'OFPTFFC_BAD_METADATA', 'OFPTFFC_BAD_TABLE', 'OFPTFFC_BAD_TYPE', 'OFPTFFC_EPERM', 'OFPTFPT_APPLY_ACTIONS', 'OFPTFPT_APPLY_ACTIONS_MISS', 'OFPTFPT_APPLY_SETFIELD', 'OFPTFPT_APPLY_SETFIELD_MISS', 'OFPTFPT_EXPERIMENTER', 'OFPTFPT_EXPERIMENTER_MISS', 'OFPTFPT_INSTRUCTIONS', 'OFPTFPT_INSTRUCTIONS_MISS', 'OFPTFPT_MATCH', 'OFPTFPT_NEXT_TABLES', 'OFPTFPT_NEXT_TABLES_MISS', 'OFPTFPT_WILDCARDS', 'OFPTFPT_WRITE_ACTIONS', 'OFPTFPT_WRITE_ACTIONS_MISS', 'OFPTFPT_WRITE_SETFIELD', 'OFPTFPT_WRITE_SETFIELD_MISS', 'OFPTMFC_BAD_CONFIG', 'OFPTMFC_BAD_TABLE', 'OFPTMFC_EPERM', 'OFPTT_ALL', 'OFPTT_MAX', 'OFPT_BARRIER_REPLY', 'OFPT_BARRIER_REQUEST', 'OFPT_ECHO_REPLY', 'OFPT_ECHO_REQUEST', 'OFPT_ERROR', 'OFPT_EXPERIMENTER', 'OFPT_FEATURES_REPLY', 'OFPT_FEATURES_REQUEST', 'OFPT_FLOW_MOD', 'OFPT_FLOW_REMOVED', 'OFPT_GET_ASYNC_REPLY', 'OFPT_GET_ASYNC_REQUEST', 'OFPT_GET_CONFIG_REPLY', 'OFPT_GET_CONFIG_REQUEST', 'OFPT_GROUP_MOD', 'OFPT_HELLO', 'OFPT_METER_MOD', 'OFPT_MULTIPART_REPLY', 'OFPT_MULTIPART_REQUEST', 'OFPT_PACKET_IN', 'OFPT_PACKET_OUT', 'OFPT_PORT_MOD', 'OFPT_PORT_STATUS', 'OFPT_QUEUE_GET_CONFIG_REPLY', 'OFPT_QUEUE_GET_CONFIG_REQUEST', 'OFPT_ROLE_REPLY', 'OFPT_ROLE_REQUEST', 'OFPT_SET_ASYNC', 'OFPT_SET_CONFIG', 'OFPT_TABLE_MOD', 'OFPVID_NONE', 'OFPVID_PRESENT', 'OFPXMC_EXPERIMENTER', 'OFPXMC_NXM_0', 'OFPXMC_NXM_1', 'OFPXMC_OPENFLOW_BASIC', 'OFPXMT_OFB_ARP_OP', 'OFPXMT_OFB_ARP_SHA', 'OFPXMT_OFB_ARP_SPA', 'OFPXMT_OFB_ARP_THA', 'OFPXMT_OFB_ARP_TPA', 'OFPXMT_OFB_ETH_DST', 'OFPXMT_OFB_ETH_SRC', 'OFPXMT_OFB_ETH_TYPE', 'OFPXMT_OFB_ICMPV4_CODE', 'OFPXMT_OFB_ICMPV4_TYPE', 'OFPXMT_OFB_ICMPV6_CODE', 'OFPXMT_OFB_ICMPV6_TYPE', 'OFPXMT_OFB_IN_PHY_PORT', 'OFPXMT_OFB_IN_PORT', 'OFPXMT_OFB_IPV4_DST', 'OFPXMT_OFB_IPV4_SRC', 'OFPXMT_OFB_IPV6_DST', 'OFPXMT_OFB_IPV6_EXTHDR', 'OFPXMT_OFB_IPV6_FLABEL', 'OFPXMT_OFB_IPV6_ND_SLL', 'OFPXMT_OFB_IPV6_ND_TARGET', 'OFPXMT_OFB_IPV6_ND_TLL', 'OFPXMT_OFB_IPV6_SRC', 'OFPXMT_OFB_IP_DSCP', 'OFPXMT_OFB_IP_ECN', 'OFPXMT_OFB_IP_PROTO', 'OFPXMT_OFB_METADATA', 'OFPXMT_OFB_MPLS_BOS', 'OFPXMT_OFB_MPLS_LABEL', 'OFPXMT_OFB_MPLS_TC', 'OFPXMT_OFB_PBB_ISID', 'OFPXMT_OFB_SCTP_DST', 'OFPXMT_OFB_SCTP_SRC', 'OFPXMT_OFB_TCP_DST', 'OFPXMT_OFB_TCP_SRC', 'OFPXMT_OFB_TUNNEL_ID', 'OFPXMT_OFB_UDP_DST', 'OFPXMT_OFB_UDP_SRC', 'OFPXMT_OFB_VLAN_PCP', 'OFPXMT_OFB_VLAN_VID', 'OFP_ACTION_EXPERIMENTER_HEADER_PACK_STR', 'OFP_ACTION_EXPERIMENTER_HEADER_SIZE', 'OFP_ACTION_GROUP_PACK_STR', 'OFP_ACTION_GROUP_SIZE', 'OFP_ACTION_HEADER_PACK_STR', 'OFP_ACTION_HEADER_SIZE', 'OFP_ACTION_MPLS_TTL_PACK_STR', 'OFP_ACTION_MPLS_TTL_SIZE', 'OFP_ACTION_NW_TTL_PACK_STR', 'OFP_ACTION_NW_TTL_SIZE', 'OFP_ACTION_OUTPUT_PACK_STR', 'OFP_ACTION_OUTPUT_SIZE', 'OFP_ACTION_POP_MPLS_PACK_STR', 'OFP_ACTION_POP_MPLS_SIZE', 'OFP_ACTION_PUSH_PACK_STR', 'OFP_ACTION_PUSH_SIZE', 'OFP_ACTION_SET_FIELD_PACK_STR', 'OFP_ACTION_SET_FIELD_SIZE', 'OFP_ACTION_SET_QUEUE_PACK_STR', 'OFP_ACTION_SET_QUEUE_SIZE', 'OFP_AGGREGATE_STATS_REPLY_PACK_STR', 'OFP_AGGREGATE_STATS_REPLY_SIZE', 'OFP_AGGREGATE_STATS_REQUEST_0_PACK_STR', 'OFP_AGGREGATE_STATS_REQUEST_0_SIZE', 'OFP_AGGREGATE_STATS_REQUEST_PACK_STR', 'OFP_AGGREGATE_STATS_REQUEST_SIZE', 'OFP_ASYNC_CONFIG_PACK_STR', 'OFP_ASYNC_CONFIG_SIZE', 'OFP_BUCKET_COUNTER_PACK_STR', 'OFP_BUCKET_COUNTER_SIZE', 'OFP_BUCKET_PACK_STR', 'OFP_BUCKET_SIZE', 'OFP_DEFAULT_PRIORITY', 'OFP_DESC_PACK_STR', 'OFP_DESC_SIZE', 'OFP_ERROR_EXPERIMENTER_MSG_PACK_STR', 'OFP_ERROR_EXPERIMENTER_MSG_SIZE', 'OFP_ERROR_MSG_PACK_STR', 'OFP_ERROR_MSG_SIZE', 'OFP_ETH_ALEN', 'OFP_ETH_ALEN_STR', 'OFP_EXPERIMENTER_HEADER_PACK_STR', 'OFP_EXPERIMENTER_HEADER_SIZE', 'OFP_EXPERIMENTER_MULTIPART_HEADER_PACK_STR', 'OFP_EXPERIMENTER_MULTIPART_HEADER_SIZE', 'OFP_FLOW_MOD_PACK_STR', 'OFP_FLOW_MOD_PACK_STR0', 'OFP_FLOW_MOD_SIZE', 'OFP_FLOW_REMOVED_PACK_STR', 'OFP_FLOW_REMOVED_PACK_STR0', 'OFP_FLOW_REMOVED_SIZE', 'OFP_FLOW_STATS_0_PACK_STR', 'OFP_FLOW_STATS_0_SIZE', 'OFP_FLOW_STATS_PACK_STR', 'OFP_FLOW_STATS_REQUEST_0_PACK_STR', 'OFP_FLOW_STATS_REQUEST_0_SIZE', 'OFP_FLOW_STATS_REQUEST_PACK_STR', 'OFP_FLOW_STATS_REQUEST_SIZE', 'OFP_FLOW_STATS_SIZE', 'OFP_GROUP_DESC_PACK_STR', 'OFP_GROUP_DESC_SIZE', 'OFP_GROUP_DESC_STATS_PACK_STR', 'OFP_GROUP_DESC_STATS_SIZE', 'OFP_GROUP_FEATURES_PACK_STR', 'OFP_GROUP_FEATURES_SIZE', 'OFP_GROUP_MOD_PACK_STR', 'OFP_GROUP_MOD_SIZE', 'OFP_GROUP_STATS_PACK_STR', 'OFP_GROUP_STATS_REQUEST_PACK_STR', 'OFP_GROUP_STATS_REQUEST_SIZE', 'OFP_GROUP_STATS_SIZE', 'OFP_HEADER_PACK_STR', 'OFP_HEADER_SIZE', 'OFP_HELLO_ELEM_HEADER_PACK_STR', 'OFP_HELLO_ELEM_HEADER_SIZE', 'OFP_HELLO_ELEM_VERSIONBITMAP_HEADER_PACK_STR', 'OFP_HELLO_ELEM_VERSIONBITMAP_HEADER_SIZE', 'OFP_HELLO_HEADER_SIZE', 'OFP_INSTRUCTION_ACTIONS_PACK_STR', 'OFP_INSTRUCTION_ACTIONS_SIZE', 'OFP_INSTRUCTION_GOTO_TABLE_PACK_STR', 'OFP_INSTRUCTION_GOTO_TABLE_SIZE', 'OFP_INSTRUCTION_METER_PACK_STR', 'OFP_INSTRUCTION_METER_SIZE', 'OFP_INSTRUCTION_WRITE_METADATA_PACK_STR', 'OFP_INSTRUCTION_WRITE_METADATA_SIZE', 'OFP_MATCH_PACK_STR', 'OFP_MATCH_SIZE', 'OFP_MAX_PORT_NAME_LEN', 'OFP_MAX_TABLE_NAME_LEN', 'OFP_MAX_TABLE_NAME_LEN_STR', 'OFP_METER_BAND_DROP_PACK_STR', 'OFP_METER_BAND_DROP_SIZE', 'OFP_METER_BAND_DSCP_REMARK_PACK_STR', 'OFP_METER_BAND_DSCP_REMARK_SIZE', 'OFP_METER_BAND_EXPERIMENTER_PACK_STR', 'OFP_METER_BAND_EXPERIMENTER_SIZE', 'OFP_METER_BAND_HEADER_PACK_STR', 'OFP_METER_BAND_HEADER_SIZE', 'OFP_METER_BAND_STATS_PACK_STR', 'OFP_METER_BAND_STATS_SIZE', 'OFP_METER_CONFIG_PACK_STR', 'OFP_METER_CONFIG_SIZE', 'OFP_METER_FEATURES_PACK_STR', 'OFP_METER_FEATURES_SIZE', 'OFP_METER_MOD_PACK_STR', 'OFP_METER_MOD_SIZE', 'OFP_METER_MULTIPART_REQUEST_PACK_STR', 'OFP_METER_MULTIPART_REQUEST_SIZE', 'OFP_METER_STATS_PACK_STR', 'OFP_METER_STATS_SIZE', 'OFP_MULTIPART_REPLY_PACK_STR', 'OFP_MULTIPART_REPLY_SIZE', 'OFP_MULTIPART_REQUEST_PACK_STR', 'OFP_MULTIPART_REQUEST_SIZE', 'OFP_NO_BUFFER', 'OFP_OXM_EXPERIMENTER_HEADER_PACK_STR', 'OFP_OXM_EXPERIMENTER_HEADER_SIZE', 'OFP_PACKET_IN_PACK_STR', 'OFP_PACKET_IN_SIZE', 'OFP_PACKET_OUT_PACK_STR', 'OFP_PACKET_OUT_SIZE', 'OFP_PACKET_QUEUE_PACK_STR', 'OFP_PACKET_QUEUE_SIZE', 'OFP_PORT_MOD_PACK_STR', 'OFP_PORT_MOD_SIZE', 'OFP_PORT_PACK_STR', 'OFP_PORT_SIZE', 'OFP_PORT_STATS_PACK_STR', 'OFP_PORT_STATS_REQUEST_PACK_STR', 'OFP_PORT_STATS_REQUEST_SIZE', 'OFP_PORT_STATS_SIZE', 'OFP_PORT_STATUS_DESC_OFFSET', 'OFP_PORT_STATUS_PACK_STR', 'OFP_PORT_STATUS_SIZE', 'OFP_PROP_EXPERIMENTER_PACK_STR', 'OFP_PROP_EXPERIMENTER_SIZE', 'OFP_QUEUE_GET_CONFIG_REPLY_PACK_STR', 'OFP_QUEUE_GET_CONFIG_REPLY_SIZE', 'OFP_QUEUE_GET_CONFIG_REQUEST_PACK_STR', 'OFP_QUEUE_GET_CONFIG_REQUEST_SIZE', 'OFP_QUEUE_PROP_EXPERIMENTER_PACK_STR', 'OFP_QUEUE_PROP_EXPERIMENTER_SIZE', 'OFP_QUEUE_PROP_HEADER_PACK_STR', 'OFP_QUEUE_PROP_HEADER_SIZE', 'OFP_QUEUE_PROP_MAX_RATE_PACK_STR', 'OFP_QUEUE_PROP_MAX_RATE_SIZE', 'OFP_QUEUE_PROP_MIN_RATE_PACK_STR', 'OFP_QUEUE_PROP_MIN_RATE_SIZE', 'OFP_QUEUE_STATS_PACK_STR', 'OFP_QUEUE_STATS_REQUEST_PACK_STR', 'OFP_QUEUE_STATS_REQUEST_SIZE', 'OFP_QUEUE_STATS_SIZE', 'OFP_ROLE_REQUEST_PACK_STR', 'OFP_ROLE_REQUEST_SIZE', 'OFP_SWITCH_CONFIG_PACK_STR', 'OFP_SWITCH_CONFIG_SIZE', 'OFP_SWITCH_FEATURES_PACK_STR', 'OFP_SWITCH_FEATURES_SIZE', 'OFP_TABLE_FEATURES_PACK_STR', 'OFP_TABLE_FEATURES_SIZE', 'OFP_TABLE_FEATURE_PROP_ACTIONS_PACK_STR', 'OFP_TABLE_FEATURE_PROP_ACTIONS_SIZE', 'OFP_TABLE_FEATURE_PROP_INSTRUCTIONS_PACK_STR', 'OFP_TABLE_FEATURE_PROP_INSTRUCTIONS_SIZE', 'OFP_TABLE_FEATURE_PROP_NEXT_TABLES_PACK_STR', 'OFP_TABLE_FEATURE_PROP_NEXT_TABLES_SIZE', 'OFP_TABLE_FEATURE_PROP_OXM_PACK_STR', 'OFP_TABLE_FEATURE_PROP_OXM_SIZE', 'OFP_TABLE_MOD_PACK_STR', 'OFP_TABLE_MOD_SIZE', 'OFP_TABLE_STATS_PACK_STR', 'OFP_TABLE_STATS_SIZE', 'OFP_TCP_PORT', 'OFP_VERSION', 'ONFERR_DUP_INSTRUCTION', 'ONFERR_ET_ASYNC_EPERM', 'ONFERR_ET_ASYNC_INVALUD', 'ONFERR_ET_ASYNC_UNSUPPORTED', 'ONFERR_ET_BAD_FLAGS', 'ONFERR_ET_BAD_ID', 'ONFERR_ET_BAD_PRIORITY', 'ONFERR_ET_BAD_TYPE', 'ONFERR_ET_BUNDLE_CLOSED', 'ONFERR_ET_BUNDLE_EXIST', 'ONFERR_ET_BUNDLE_IN_PROGRESS', 'ONFERR_ET_CANT_SYNC', 'ONFERR_ET_EPERM', 'ONFERR_ET_FAILED', 'ONFERR_ET_MPART_REPLY_TIMEOUT', 'ONFERR_ET_MPART_REQUEST_TIMEOUT', 'ONFERR_ET_MSG_BAD_LEN', 'ONFERR_ET_MSG_BAD_XID', 'ONFERR_ET_MSG_CONFLICT', 'ONFERR_ET_MSG_TOO_MANY', 'ONFERR_ET_MSG_UNSUP', 'ONFERR_ET_OUT_OF_BUNDLES', 'ONFERR_ET_TIMEOUT', 'ONFERR_ET_UNKNOWN', 'ONFFME_ABBREV', 'ONFFME_ADDED', 'ONFFME_DELETED', 'ONFFME_MODIFIED', 'ONFFMF_ACTIONS', 'ONFFMF_ADD', 'ONFFMF_DELETE', 'ONFFMF_INITIAL', 'ONFFMF_MODIFY', 'ONFFMF_OWN', 'ONFMP_FLOW_MONITOR', 'ONFT_FLOW_MONITOR_CANCEL', 'ONFT_FLOW_MONITOR_PAUSED', 'ONFT_FLOW_MONITOR_RESUMED', 'ONF_BCT_CLOSE_REPLY', 'ONF_BCT_CLOSE_REQUEST', 'ONF_BCT_COMMIT_REPLY', 'ONF_BCT_COMMIT_REQUEST', 'ONF_BCT_DISCARD_REPLY', 'ONF_BCT_DISCARD_REQUEST', 'ONF_BCT_OPEN_REPLY', 'ONF_BCT_OPEN_REQUEST', 'ONF_BF_ATOMIC', 'ONF_BF_ORDERED', 'ONF_BUNDLE_ADD_MSG_PACK_STR', 'ONF_BUNDLE_ADD_MSG_SIZE', 'ONF_BUNDLE_CTRL_PACK_STR', 'ONF_BUNDLE_CTRL_SIZE', 'ONF_ET_BPT_EXPERIMENTER', 'ONF_ET_BUNDLE_ADD_MESSAGE', 'ONF_ET_BUNDLE_CONTROL', 'ONF_FLOW_MONITOR_REQUEST_PACK_STR', 'ONF_FLOW_MONITOR_REQUEST_SIZE', 'ONF_FLOW_UPDATE_ABBREV_PACK_STR', 'ONF_FLOW_UPDATE_ABBREV_SIZE', 'ONF_FLOW_UPDATE_FULL_PACK_STR', 'ONF_FLOW_UPDATE_FULL_SIZE', 'ONF_FLOW_UPDATE_HEADER_PACK_STR', 'ONF_FLOW_UPDATE_HEADER_SIZE', 'OXM_OF_ARP_OP', 'OXM_OF_ARP_OP_W', 'OXM_OF_ARP_SHA', 'OXM_OF_ARP_SHA_W', 'OXM_OF_ARP_SPA', 'OXM_OF_ARP_SPA_W', 'OXM_OF_ARP_THA', 'OXM_OF_ARP_THA_W', 'OXM_OF_ARP_TPA', 'OXM_OF_ARP_TPA_W', 'OXM_OF_ETH_DST', 'OXM_OF_ETH_DST_W', 'OXM_OF_ETH_SRC', 'OXM_OF_ETH_SRC_W', 'OXM_OF_ETH_TYPE', 'OXM_OF_ETH_TYPE_W', 'OXM_OF_ICMPV4_CODE', 'OXM_OF_ICMPV4_CODE_W', 'OXM_OF_ICMPV4_TYPE', 'OXM_OF_ICMPV4_TYPE_W', 'OXM_OF_ICMPV6_CODE', 'OXM_OF_ICMPV6_CODE_W', 'OXM_OF_ICMPV6_TYPE', 'OXM_OF_ICMPV6_TYPE_W', 'OXM_OF_IN_PHY_PORT', 'OXM_OF_IN_PHY_PORT_W', 'OXM_OF_IN_PORT', 'OXM_OF_IN_PORT_W', 'OXM_OF_IPV4_DST', 'OXM_OF_IPV4_DST_W', 'OXM_OF_IPV4_SRC', 'OXM_OF_IPV4_SRC_W', 'OXM_OF_IPV6_DST', 'OXM_OF_IPV6_DST_W', 'OXM_OF_IPV6_EXTHDR', 'OXM_OF_IPV6_EXTHDR_W', 'OXM_OF_IPV6_FLABEL', 'OXM_OF_IPV6_FLABEL_W', 'OXM_OF_IPV6_ND_SLL', 'OXM_OF_IPV6_ND_SLL_W', 'OXM_OF_IPV6_ND_TARGET', 'OXM_OF_IPV6_ND_TARGET_W', 'OXM_OF_IPV6_ND_TLL', 'OXM_OF_IPV6_ND_TLL_W', 'OXM_OF_IPV6_SRC', 'OXM_OF_IPV6_SRC_W', 'OXM_OF_IP_DSCP', 'OXM_OF_IP_DSCP_W', 'OXM_OF_IP_ECN', 'OXM_OF_IP_ECN_W', 'OXM_OF_IP_PROTO', 'OXM_OF_IP_PROTO_W', 'OXM_OF_METADATA', 'OXM_OF_METADATA_W', 'OXM_OF_MPLS_BOS', 'OXM_OF_MPLS_BOS_W', 'OXM_OF_MPLS_LABEL', 'OXM_OF_MPLS_LABEL_W', 'OXM_OF_MPLS_TC', 'OXM_OF_MPLS_TC_W', 'OXM_OF_PBB_ISID', 'OXM_OF_PBB_ISID_W', 'OXM_OF_SCTP_DST', 'OXM_OF_SCTP_DST_W', 'OXM_OF_SCTP_SRC', 'OXM_OF_SCTP_SRC_W', 'OXM_OF_TCP_DST', 'OXM_OF_TCP_DST_W', 'OXM_OF_TCP_SRC', 'OXM_OF_TCP_SRC_W', 'OXM_OF_TUNNEL_ID', 'OXM_OF_TUNNEL_ID_W', 'OXM_OF_UDP_DST', 'OXM_OF_UDP_DST_W', 'OXM_OF_UDP_SRC', 'OXM_OF_UDP_SRC_W', 'OXM_OF_VLAN_PCP', 'OXM_OF_VLAN_PCP_W', 'OXM_OF_VLAN_VID', 'OXM_OF_VLAN_VID_W', 'SERIAL_NUM_LEN', 'SERIAL_NUM_LEN_STR', '_OFP_AGGREGATE_STATS_REQUEST_0_PACK_STR', '_OFP_FLOW_MOD_PACK_STR0', '_OFP_FLOW_REMOVED_PACK_STR0', '_OFP_FLOW_STATS_0_PACK_STR', '_OFP_FLOW_STATS_REQUEST_0_PACK_STR', '_OFP_MATCH_PACK_STR', '_OFP_PORT_PACK_STR', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_oxm_field_desc', '_oxm_tlv_header', 'calcsize', 'nicira_ext', 'ofp_error_code_to_str', 'ofp_error_to_jsondict', 'ofp_error_type_to_str', 'ofp_msg_type_to_str', 'ofproto_utils', 'oxm_fields', 'oxm_from_jsondict', 'oxm_from_user', 'oxm_from_user_header', 'oxm_get_field_info_by_name', 'oxm_normalize_user', 'oxm_parse', 'oxm_parse_header', 'oxm_serialize', 'oxm_serialize_header', 'oxm_tlv_header', 'oxm_tlv_header_extract_hasmask', 'oxm_tlv_header_extract_length', 'oxm_tlv_header_w', 'oxm_to_jsondict', 'oxm_to_user', 'oxm_to_user_header', 'oxm_types', 'type_desc']

View Code

5.獲取邏輯設備datapath中OpenFlow協議解析信息

<module 'ryu.ofproto.ofproto_v1_3_parser' from '/usr/local/lib/python3.6/dist-packages/ryu/ofproto/ofproto_v1_3_parser.py'>

['Flow', 'FlowWildcards', 'LOG', 'MTArpOp', 'MTArpSha', 'MTArpSpa', 'MTArpTha', 'MTArpTpa', 'MTEthDst', 'MTEthSrc', 'MTEthType', 'MTICMPV4Code', 'MTICMPV4Type', 'MTICMPV6Code', 'MTICMPV6Type', 'MTIPDscp', 'MTIPECN', 'MTIPProto', 'MTIPV4Dst', 'MTIPV4Src', 'MTIPv6', 'MTIPv6Dst', 'MTIPv6ExtHdr', 'MTIPv6Flabel', 'MTIPv6NdSll', 'MTIPv6NdTarget', 'MTIPv6NdTll', 'MTIPv6Src', 'MTInPhyPort', 'MTInPort', 'MTMetadata', 'MTMplsBos', 'MTMplsLabel', 'MTMplsTc', 'MTPbbIsid', 'MTSCTPDst', 'MTSCTPSrc', 'MTTCPDst', 'MTTCPSrc', 'MTTunnelId', 'MTUDPDst', 'MTUDPSrc', 'MTVlanPcp', 'MTVlanVid', 'MsgBase', 'NXAction', 'NXActionBundle', 'NXActionBundleLoad', 'NXActionCT', 'NXActionCTClear', 'NXActionConjunction', 'NXActionController', 'NXActionController2', 'NXActionDecMplsTtl', 'NXActionDecNshTtl', 'NXActionDecTtl', 'NXActionDecTtlCntIds', 'NXActionEncapEther', 'NXActionEncapNsh', 'NXActionExit', 'NXActionFinTimeout', 'NXActionLearn', 'NXActionMultipath', 'NXActionNAT', 'NXActionNote', 'NXActionOutputReg', 'NXActionOutputReg2', 'NXActionOutputTrunc', 'NXActionPopMpls', 'NXActionPopQueue', 'NXActionPushMpls', 'NXActionRegLoad', 'NXActionRegLoad2', 'NXActionRegMove', 'NXActionResubmit', 'NXActionResubmitTable', 'NXActionSample', 'NXActionSample2', 'NXActionSetMplsLabel', 'NXActionSetMplsTc', 'NXActionSetMplsTtl', 'NXActionSetQueue', 'NXActionSetTunnel', 'NXActionSetTunnel64', 'NXActionStackPop', 'NXActionStackPush', 'NXActionUnknown', 'NXFlowSpecLoad', 'NXFlowSpecMatch', 'NXFlowSpecOutput', 'OFPAction', 'OFPActionCopyTtlIn', 'OFPActionCopyTtlOut', 'OFPActionDecMplsTtl', 'OFPActionDecNwTtl', 'OFPActionExperimenter', 'OFPActionExperimenterUnknown', 'OFPActionGroup', 'OFPActionHeader', 'OFPActionId', 'OFPActionOutput', 'OFPActionPopMpls', 'OFPActionPopPbb', 'OFPActionPopVlan', 'OFPActionPushMpls', 'OFPActionPushPbb', 'OFPActionPushVlan', 'OFPActionSetField', 'OFPActionSetMplsTtl', 'OFPActionSetNwTtl', 'OFPActionSetQueue', 'OFPAggregateStats', 'OFPAggregateStatsReply', 'OFPAggregateStatsRequest', 'OFPBarrierReply', 'OFPBarrierRequest', 'OFPBucket', 'OFPBucketCounter', 'OFPDescStats', 'OFPDescStatsReply', 'OFPDescStatsRequest', 'OFPEchoReply', 'OFPEchoRequest', 'OFPErrorExperimenterMsg', 'OFPErrorMsg', 'OFPExperimenter', 'OFPExperimenterMultipart', 'OFPExperimenterOxmId', 'OFPExperimenterStatsReply', 'OFPExperimenterStatsRequest', 'OFPExperimenterStatsRequestBase', 'OFPFeaturesRequest', 'OFPFlowMod', 'OFPFlowRemoved', 'OFPFlowStats', 'OFPFlowStatsReply', 'OFPFlowStatsRequest', 'OFPFlowStatsRequestBase', 'OFPGetAsyncReply', 'OFPGetAsyncRequest', 'OFPGetConfigReply', 'OFPGetConfigRequest', 'OFPGroupDescStats', 'OFPGroupDescStatsReply', 'OFPGroupDescStatsRequest', 'OFPGroupFeaturesStats', 'OFPGroupFeaturesStatsReply', 'OFPGroupFeaturesStatsRequest', 'OFPGroupMod', 'OFPGroupStats', 'OFPGroupStatsReply', 'OFPGroupStatsRequest', 'OFPHello', 'OFPHelloElemVersionBitmap', 'OFPInstruction', 'OFPInstructionActions', 'OFPInstructionGotoTable', 'OFPInstructionId', 'OFPInstructionMeter', 'OFPInstructionWriteMetadata', 'OFPMatch', 'OFPMatchField', 'OFPMeterBand', 'OFPMeterBandDrop', 'OFPMeterBandDscpRemark', 'OFPMeterBandExperimenter', 'OFPMeterBandHeader', 'OFPMeterBandStats', 'OFPMeterConfigStats', 'OFPMeterConfigStatsReply', 'OFPMeterConfigStatsRequest', 'OFPMeterFeaturesStats', 'OFPMeterFeaturesStatsReply', 'OFPMeterFeaturesStatsRequest', 'OFPMeterMod', 'OFPMeterStats', 'OFPMeterStatsReply', 'OFPMeterStatsRequest', 'OFPMultipartReply', 'OFPMultipartRequest', 'OFPOxmId', 'OFPPacketIn', 'OFPPacketOut', 'OFPPacketQueue', 'OFPPort', 'OFPPortDescStatsReply', 'OFPPortDescStatsRequest', 'OFPPortMod', 'OFPPortStats', 'OFPPortStatsReply', 'OFPPortStatsRequest', 'OFPPortStatus', 'OFPPropBase', 'OFPPropCommonExperimenter4ByteData', 'OFPPropUnknown', 'OFPQueueGetConfigReply', 'OFPQueueGetConfigRequest', 'OFPQueueProp', 'OFPQueuePropExperimenter', 'OFPQueuePropHeader', 'OFPQueuePropMaxRate', 'OFPQueuePropMinRate', 'OFPQueueStats', 'OFPQueueStatsReply', 'OFPQueueStatsRequest', 'OFPRoleReply', 'OFPRoleRequest', 'OFPSetAsync', 'OFPSetConfig', 'OFPSwitchFeatures', 'OFPTableFeatureProp', 'OFPTableFeaturePropActions', 'OFPTableFeaturePropExperimenter', 'OFPTableFeaturePropInstructions', 'OFPTableFeaturePropNextTables', 'OFPTableFeaturePropOxm', 'OFPTableFeaturePropUnknown', 'OFPTableFeaturesStats', 'OFPTableFeaturesStatsReply', 'OFPTableFeaturesStatsRequest', 'OFPTableMod', 'OFPTableStats', 'OFPTableStatsReply', 'OFPTableStatsRequest', 'ONFBundleAddMsg', 'ONFBundleCtrlMsg', 'ONFFlowMonitorRequest', 'ONFFlowMonitorStatsRequest', 'StringifyMixin', 'UINT16_MAX', 'UINT32_MAX', 'UINT64_MAX', '_MSG_PARSERS', '_NXFlowSpec', '__builtins__', '__cached__', '__doc__', '__file__', '__loader__', '__name__', '__package__', '__spec__', '_register_exp_type', '_register_parser', '_set_msg_type', '_set_stats_type', 'addrconv', 'base64', 'ether', 'exception', 'logging', 'mac', 'msg_pack_into', 'msg_parser', 'nx_actions', 'ofproto', 'ofproto_common', 'ofproto_parser', 'packet', 'six', 'struct', 'utils']

View Code

https://blog.csdn.net/Neo233/article/details/79933849

5.通過ofp_parser中獲取match類匹配

OFPMatch(oxm_fields={})

['_TYPE', '__class__', '__contains__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_base_attributes', '_class_prefixes', '_class_suffixes', '_composed_with_old_api', '_decode_value', '_encode_value', '_fields2', '_flow', '_get_decoder', '_get_default_decoder', '_get_default_encoder', '_get_encoder', '_get_type', '_is_class', '_opt_attributes', '_restore_args', '_wc', 'append_field', 'cls_from_jsondict_key', 'fields', 'from_jsondict', 'get', 'items', 'iteritems', 'length', 'obj_from_jsondict', 'parser', 'parser_old', 'serialize', 'serialize_old', 'set_arp_opcode', 'set_arp_sha', 'set_arp_sha_masked', 'set_arp_spa', 'set_arp_spa_masked', 'set_arp_tha', 'set_arp_tha_masked', 'set_arp_tpa', 'set_arp_tpa_masked', 'set_classes', 'set_dl_dst', 'set_dl_dst_masked', 'set_dl_src', 'set_dl_src_masked', 'set_dl_type', 'set_icmpv4_code', 'set_icmpv4_type', 'set_icmpv6_code', 'set_icmpv6_type', 'set_in_phy_port', 'set_in_port', 'set_ip_dscp', 'set_ip_ecn', 'set_ip_proto', 'set_ipv4_dst', 'set_ipv4_dst_masked', 'set_ipv4_src', 'set_ipv4_src_masked', 'set_ipv6_dst', 'set_ipv6_dst_masked', 'set_ipv6_exthdr', 'set_ipv6_exthdr_masked', 'set_ipv6_flabel', 'set_ipv6_flabel_masked', 'set_ipv6_nd_sll', 'set_ipv6_nd_target', 'set_ipv6_nd_tll', 'set_ipv6_src', 'set_ipv6_src_masked', 'set_metadata', 'set_metadata_masked', 'set_mpls_bos', 'set_mpls_label', 'set_mpls_tc', 'set_pbb_isid', 'set_pbb_isid_masked', 'set_sctp_dst', 'set_sctp_src', 'set_tcp_dst', 'set_tcp_src', 'set_tunnel_id', 'set_tunnel_id_masked', 'set_udp_dst', 'set_udp_src', 'set_vlan_pcp', 'set_vlan_vid', 'set_vlan_vid_masked', 'set_vlan_vid_none', 'stringify_attrs', 'to_jsondict', 'type']

View Code

5.通過ofp_parser中獲取actions類匹配

[OFPActionOutput(len=16,max_len=65535,port=4294967293,type=0)]

['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

View Code

6.match = ofp_parser.OFPMatch()中OFPMatch類協議支持的匹配方式

class OFPMatch(StringifyMixin):
    """
    Flow Match Structure

    This class is implementation of the flow match structure having
    compose/query API.
    There are new API and old API for compatibility. the old API is
    supposed to be removed later.

    You can define the flow match by the keyword arguments.
    The following arguments are available.

    ================ =============== ==================================
    Argument         Value           Description
    ================ =============== ==================================
    in_port          Integer 32bit   Switch input port
    in_phy_port      Integer 32bit   Switch physical input port
    metadata         Integer 64bit   Metadata passed between tables
    eth_dst          MAC address     Ethernet destination address
    eth_src          MAC address     Ethernet source address
    eth_type         Integer 16bit   Ethernet frame type
    vlan_vid         Integer 16bit   VLAN id
    vlan_pcp         Integer 8bit    VLAN priority
    ip_dscp          Integer 8bit    IP DSCP (6 bits in ToS field)
    ip_ecn           Integer 8bit    IP ECN (2 bits in ToS field)
    ip_proto         Integer 8bit    IP protocol
    ipv4_src         IPv4 address    IPv4 source address
    ipv4_dst         IPv4 address    IPv4 destination address
    tcp_src          Integer 16bit   TCP source port
    tcp_dst          Integer 16bit   TCP destination port
    udp_src          Integer 16bit   UDP source port
    udp_dst          Integer 16bit   UDP destination port
    sctp_src         Integer 16bit   SCTP source port
    sctp_dst         Integer 16bit   SCTP destination port
    icmpv4_type      Integer 8bit    ICMP type
    icmpv4_code      Integer 8bit    ICMP code
    arp_op           Integer 16bit   ARP opcode
    arp_spa          IPv4 address    ARP source IPv4 address
    arp_tpa          IPv4 address    ARP target IPv4 address
    arp_sha          MAC address     ARP source hardware address
    arp_tha          MAC address     ARP target hardware address
    ipv6_src         IPv6 address    IPv6 source address
    ipv6_dst         IPv6 address    IPv6 destination address
    ipv6_flabel      Integer 32bit   IPv6 Flow Label
    icmpv6_type      Integer 8bit    ICMPv6 type
    icmpv6_code      Integer 8bit    ICMPv6 code
    ipv6_nd_target   IPv6 address    Target address for ND
    ipv6_nd_sll      MAC address     Source link-layer for ND
    ipv6_nd_tll      MAC address     Target link-layer for ND
    mpls_label       Integer 32bit   MPLS label
    mpls_tc          Integer 8bit    MPLS TC
    mpls_bos         Integer 8bit    MPLS BoS bit
    pbb_isid         Integer 24bit   PBB I-SID
    tunnel_id        Integer 64bit   Logical Port Metadata
    ipv6_exthdr      Integer 16bit   IPv6 Extension Header pseudo-field
    pbb_uca          Integer 8bit    PBB UCA header field
                                     (EXT-256 Old version of ONF Extension)
    tcp_flags        Integer 16bit   TCP flags
                                     (EXT-109 ONF Extension)
    actset_output    Integer 32bit   Output port from action set metadata
                                     (EXT-233 ONF Extension)
    ================ =============== ==================================

    Example::

        >>> # compose
        >>> match = parser.OFPMatch(
        ...     in_port=1,
        ...     eth_type=0x86dd,
        ...     ipv6_src=('2001:db8:bd05:1d2:288a:1fc0:1:10ee',
        ...               'ffff:ffff:ffff:ffff::'),
        ...     ipv6_dst='2001:db8:bd05:1d2:288a:1fc0:1:10ee')
        >>> # query
        >>> if 'ipv6_src' in match:
        ...     print match['ipv6_src']
        ...
        ('2001:db8:bd05:1d2:288a:1fc0:1:10ee', 'ffff:ffff:ffff:ffff::')

    .. Note::

        For the list of the supported Nicira experimenter matches,
        please refer to :ref:`ryu.ofproto.nx_match <nx_match_structures>`.

    .. Note::

        For VLAN id match field, special values are defined in OpenFlow Spec.

        1) Packets with and without a VLAN tag

            - Example::

                match = parser.OFPMatch()

            - Packet Matching

                ====================== =====
                non-VLAN-tagged        MATCH
                VLAN-tagged(vlan_id=3) MATCH
                VLAN-tagged(vlan_id=5) MATCH
                ====================== =====

        2) Only packets without a VLAN tag

            - Example::

                match = parser.OFPMatch(vlan_vid=0x0000)

            - Packet Matching

                ====================== =====
                non-VLAN-tagged        MATCH
                VLAN-tagged(vlan_id=3)   x
                VLAN-tagged(vlan_id=5)   x
                ====================== =====

        3) Only packets with a VLAN tag regardless of its value

            - Example::

                match = parser.OFPMatch(vlan_vid=(0x1000, 0x1000))

            - Packet Matching

                ====================== =====
                non-VLAN-tagged          x
                VLAN-tagged(vlan_id=3) MATCH
                VLAN-tagged(vlan_id=5) MATCH
                ====================== =====

        4) Only packets with VLAN tag and VID equal

            - Example::

                match = parser.OFPMatch(vlan_vid=(0x1000 | 3))

            - Packet Matching

                ====================== =====
                non-VLAN-tagged          x
                VLAN-tagged(vlan_id=3) MATCH
                VLAN-tagged(vlan_id=5)   x
                ====================== =====
    """

7.out = ofp_parser.OFPPacketOut(datapath=datapath,buffer_id=msg.buffer_id,in_port=in_port,actions=actions,data=msg.data)

        out = ofp_parser.OFPPacketOut(datapath=datapath,buffer_id=msg.buffer_id,
                                            in_port=in_port,actions=actions)    

        datapath.send_msg(out);

控制器使用此消息通過交換機發送數據包(存在控制器的消息緩存,我們需要發送給交換機,讓他進行發送)---注意我們不僅要傳遞buffer_id還要傳遞data才可以實現將數據返回

@_set_msg_type(ofproto.OFPT_PACKET_OUT)
class OFPPacketOut(MsgBase):
    """
    Packet-Out message

    The controller uses this message to send a packet out throught the
    switch.

    ================ ======================================================
    Attribute        Description
    ================ ======================================================
    buffer_id        ID assigned by datapath (OFP_NO_BUFFER if none)
    in_port          Packet's input port or ``OFPP_CONTROLLER``
    actions          list of OpenFlow action class
    data             Packet data of a binary type value or
                     an instances of packet.Packet.
    ================ ======================================================

    Example::

        def send_packet_out(self, datapath, buffer_id, in_port):
            ofp = datapath.ofproto
            ofp_parser = datapath.ofproto_parser

            actions = [ofp_parser.OFPActionOutput(ofp.OFPP_FLOOD, 0)]
            req = ofp_parser.OFPPacketOut(datapath, buffer_id,
                                          in_port, actions)
            datapath.send_msg(req)
    """

    def __init__(self, datapath, buffer_id=None, in_port=None, actions=None,
                 data=None, actions_len=None):
        assert in_port is not None

        super(OFPPacketOut, self).__init__(datapath)
        self.buffer_id = buffer_id
        self.in_port = in_port
        self.actions_len = 0
        self.actions = actions
        self.data = data

    def _serialize_body(self):
        self.actions_len = 0
        offset = ofproto.OFP_PACKET_OUT_SIZE
        for a in self.actions:
            a.serialize(self.buf, offset)
            offset += a.len
            self.actions_len += a.len

        if self.data is not None:
            assert self.buffer_id == 0xffffffff
            if isinstance(self.data, packet.Packet):
                self.data.serialize()
                self.buf += self.data.data
            else:
                self.buf += self.data

        msg_pack_into(ofproto.OFP_PACKET_OUT_PACK_STR,
                      self.buf, ofproto.OFP_HEADER_SIZE,
                      self.buffer_id, self.in_port, self.actions_len)

    @classmethod
    def from_jsondict(cls, dict_, decode_string=base64.b64decode,
                      **additional_args):
        if isinstance(dict_['data'], dict):
            data = dict_.pop('data')
            ins = super(OFPPacketOut, cls).from_jsondict(dict_,
                                                         decode_string,
                                                         **additional_args)
            ins.data = packet.Packet.from_jsondict(data['Packet'])
            dict_['data'] = data
        else:
            ins = super(OFPPacketOut, cls).from_jsondict(dict_,
                                                         decode_string,
                                                         **additional_args)

        return ins

8.inst = [ofp_parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS,actions)]

        inst = [ofp_parser.OFPInstructionActions(ofproto.OFPIT_APPLY_ACTIONS,
                                             actions)]

        mod = ofp_parser.OFPFlowMod(datapath=datapath,priority=priority,
                                    match=match,instructions=inst)
        datapath.send_msg(mod);

此指令寫入/應用/清除操作。就是說通過這個類實現我們對聲明的actions行為進行應用(應用這個動作)、還是清除(不需要這個動作了)、還是寫入操作

class OFPInstruction(StringifyMixin):
    _INSTRUCTION_TYPES = {}

    @staticmethod
    def register_instruction_type(types):
        def _register_instruction_type(cls):
            for type_ in types:
                OFPInstruction._INSTRUCTION_TYPES[type_] = cls
            return cls
        return _register_instruction_type

    @classmethod
    def parser(cls, buf, offset):
        (type_, len_) = struct.unpack_from('!HH', buf, offset)
        cls_ = cls._INSTRUCTION_TYPES.get(type_)
        return cls_.parser(buf, offset)
@OFPInstruction.register_instruction_type([ofproto.OFPIT_WRITE_ACTIONS,
                                           ofproto.OFPIT_APPLY_ACTIONS,
                                           ofproto.OFPIT_CLEAR_ACTIONS])
class OFPInstructionActions(OFPInstruction):
    """
    Actions instruction

    This instruction writes/applies/clears the actions.

    ================ ======================================================
    Attribute        Description
    ================ ======================================================
    type             One of following values.

                     | OFPIT_WRITE_ACTIONS
                     | OFPIT_APPLY_ACTIONS
                     | OFPIT_CLEAR_ACTIONS
    actions          list of OpenFlow action class
    ================ ======================================================

    ``type`` attribute corresponds to ``type_`` parameter of __init__.
    """

    def __init__(self, type_, actions=None, len_=None):
        super(OFPInstructionActions, self).__init__()
        self.type = type_
        for a in actions:
            assert isinstance(a, OFPAction)
        self.actions = actions

    @classmethod
    def parser(cls, buf, offset):
        (type_, len_) = struct.unpack_from(
            ofproto.OFP_INSTRUCTION_ACTIONS_PACK_STR,
            buf, offset)

        offset += ofproto.OFP_INSTRUCTION_ACTIONS_SIZE
        actions = []
        actions_len = len_ - ofproto.OFP_INSTRUCTION_ACTIONS_SIZE
        exc = None
        try:
            while actions_len > 0:
                a = OFPAction.parser(buf, offset)
                actions.append(a)
                actions_len -= a.len
                offset += a.len
        except struct.error as e:
            exc = e

        inst = cls(type_, actions)
        inst.len = len_
        if exc is not None:
            raise exception.OFPTruncatedMessage(ofpmsg=inst,
                                                residue=buf[offset:],
                                                original_exception=exc)
        return inst

    def serialize(self, buf, offset):
        action_offset = offset + ofproto.OFP_INSTRUCTION_ACTIONS_SIZE
        if self.actions:
            for a in self.actions:
                a.serialize(buf, action_offset)
                action_offset += a.len

        self.len = action_offset - offset
        pad_len = utils.round_up(self.len, 8) - self.len
        msg_pack_into("%dx" % pad_len, buf, action_offset)
        self.len += pad_len

        msg_pack_into(ofproto.OFP_INSTRUCTION_ACTIONS_PACK_STR,
                      buf, offset, self.type, self.len)

9.mod = ofp_parser.OFPFlowMod(datapath=datapath,priority=priority,match=match,instructions=inst); 修改流表項消息 控制器發送此消息以修改流表。

@_register_parser
@_set_msg_type(ofproto.OFPT_FLOW_MOD)
class OFPFlowMod(MsgBase):
    """
    Modify Flow entry message

    The controller sends this message to modify the flow table.

    ================ ======================================================
    Attribute        Description
    ================ ======================================================
    cookie           Opaque controller-issued identifier
    cookie_mask      Mask used to restrict the cookie bits that must match
                     when the command is ``OPFFC_MODIFY*`` or
                     ``OFPFC_DELETE*``
    table_id         ID of the table to put the flow in
    command          One of the following values.

                     | OFPFC_ADD
                     | OFPFC_MODIFY
                     | OFPFC_MODIFY_STRICT
                     | OFPFC_DELETE
                     | OFPFC_DELETE_STRICT
    idle_timeout     Idle time before discarding (seconds)
    hard_timeout     Max time before discarding (seconds)
    priority         Priority level of flow entry
    buffer_id        Buffered packet to apply to (or OFP_NO_BUFFER)
    out_port         For ``OFPFC_DELETE*`` commands, require matching
                     entries to include this as an output port
    out_group        For ``OFPFC_DELETE*`` commands, require matching
                     entries to include this as an output group
    flags            Bitmap of the following flags.

                     | OFPFF_SEND_FLOW_REM
                     | OFPFF_CHECK_OVERLAP
                     | OFPFF_RESET_COUNTS
                     | OFPFF_NO_PKT_COUNTS
                     | OFPFF_NO_BYT_COUNTS
    match            Instance of ``OFPMatch``
    instructions     list of ``OFPInstruction*`` instance
    ================ ======================================================

    Example::

        def send_flow_mod(self, datapath):
            ofp = datapath.ofproto
            ofp_parser = datapath.ofproto_parser

            cookie = cookie_mask = 0
            table_id = 0
            idle_timeout = hard_timeout = 0
            priority = 32768
            buffer_id = ofp.OFP_NO_BUFFER
            match = ofp_parser.OFPMatch(in_port=1, eth_dst='ff:ff:ff:ff:ff:ff')
            actions = [ofp_parser.OFPActionOutput(ofp.OFPP_NORMAL, 0)]
            inst = [ofp_parser.OFPInstructionActions(ofp.OFPIT_APPLY_ACTIONS,
                                                     actions)]
            req = ofp_parser.OFPFlowMod(datapath, cookie, cookie_mask,
                                        table_id, ofp.OFPFC_ADD,
                                        idle_timeout, hard_timeout,
                                        priority, buffer_id,
                                        ofp.OFPP_ANY, ofp.OFPG_ANY,
                                        ofp.OFPFF_SEND_FLOW_REM,
                                        match, inst)
            datapath.send_msg(req)
    """

    def __init__(self, datapath, cookie=0, cookie_mask=0, table_id=0,
                 command=ofproto.OFPFC_ADD,
                 idle_timeout=0, hard_timeout=0,
                 priority=ofproto.OFP_DEFAULT_PRIORITY,
                 buffer_id=ofproto.OFP_NO_BUFFER,
                 out_port=0, out_group=0, flags=0,
                 match=None,
                 instructions=None):
        instructions = instructions if instructions else []
        super(OFPFlowMod, self).__init__(datapath)
        self.cookie = cookie
        self.cookie_mask = cookie_mask
        self.table_id = table_id
        self.command = command
        self.idle_timeout = idle_timeout
        self.hard_timeout = hard_timeout
        self.priority = priority
        self.buffer_id = buffer_id
        self.out_port = out_port
        self.out_group = out_group
        self.flags = flags
        if match is None:
            match = OFPMatch()
        assert isinstance(match, OFPMatch)
        self.match = match
        for i in instructions:
            assert isinstance(i, OFPInstruction)
        self.instructions = instructions

    def _serialize_body(self):
        msg_pack_into(ofproto.OFP_FLOW_MOD_PACK_STR0, self.buf,
                      ofproto.OFP_HEADER_SIZE,
                      self.cookie, self.cookie_mask, self.table_id,
                      self.command, self.idle_timeout, self.hard_timeout,
                      self.priority, self.buffer_id, self.out_port,
                      self.out_group, self.flags)

        offset = (ofproto.OFP_FLOW_MOD_SIZE -
                  ofproto.OFP_MATCH_SIZE)

        match_len = self.match.serialize(self.buf, offset)
        offset += match_len

        for inst in self.instructions:
            inst.serialize(self.buf, offset)
            offset += inst.len

    @classmethod
    def parser(cls, datapath, version, msg_type, msg_len, xid, buf):
        msg = super(OFPFlowMod, cls).parser(
            datapath, version, msg_type, msg_len, xid, buf)

        (msg.cookie, msg.cookie_mask, msg.table_id,
         msg.command, msg.idle_timeout, msg.hard_timeout,
         msg.priority, msg.buffer_id, msg.out_port,
         msg.out_group, msg.flags) = struct.unpack_from(
            ofproto.OFP_FLOW_MOD_PACK_STR0, msg.buf,
            ofproto.OFP_HEADER_SIZE)
        offset = ofproto.OFP_FLOW_MOD_SIZE - ofproto.OFP_HEADER_SIZE

        try:
            msg.match = OFPMatch.parser(buf, offset)
        except exception.OFPTruncatedMessage as e:
            msg.match = e.ofpmsg
            e.ofpmsg = msg
            raise e

        offset += utils.round_up(msg.match.length, 8)

        instructions = []
        try:
            while offset < msg_len:
                i = OFPInstruction.parser(buf, offset)
                instructions.append(i)
                offset += i.len
        except exception.OFPTruncatedMessage as e:
            instructions.append(e.ofpmsg)
            msg.instructions = instructions
            e.ofpmsg = msg
            raise e
        except struct.error as e:
            msg.instructions = instructions
            raise exception.OFPTruncatedMessage(ofpmsg=msg,
                                                residue=buf[offset:],
                                                original_exception=e)
        msg.instructions = instructions

        return msg

10.actions = [ofp_parser.OFPActionOutput(ofproto.OFPP_CONTROLLER,ofproto.OFPCML_NO_BUFFER)]---此操作表示將數據包輸出到交換機端口

@OFPAction.register_action_type(ofproto.OFPAT_OUTPUT,
                                ofproto.OFP_ACTION_OUTPUT_SIZE)
class OFPActionOutput(OFPAction):
    """
    Output action

    This action indicates output a packet to the switch port.

    ================ ======================================================
    Attribute        Description
    ================ ======================================================
    port             Output port
    max_len          Max length to send to controller
    ================ ======================================================
    """

    def __init__(self, port, max_len=ofproto.OFPCML_MAX,
                 type_=None, len_=None):
        super(OFPActionOutput, self).__init__()
        self.port = port
        self.max_len = max_len

    @classmethod
    def parser(cls, buf, offset):
        type_, len_, port, max_len = struct.unpack_from(
            ofproto.OFP_ACTION_OUTPUT_PACK_STR, buf, offset)
        return cls(port, max_len)

    def serialize(self, buf, offset):
        msg_pack_into(ofproto.OFP_ACTION_OUTPUT_PACK_STR, buf,
                      offset, self.type, self.len, self.port, self.max_len)

11.ofproto.OFPP_CONTROLLER,ofproto.OFPCML_NO_BUFFER  一個輸出端口,一個是數據包最大長度

<module 'ryu.ofproto.ofproto_v1_3' from '/usr/local/lib/python3.6/dist-packages/ryu/ofproto/ofproto_v1_3.py'>
# enum ofp_port_no
OFPP_MAX = 0xffffff00
OFPP_IN_PORT = 0xfffffff8       # Send the packet out the input port. This
                                # virtual port must be explicitly used
                                # in order to send back out of the input
                                # port.
OFPP_TABLE = 0xfffffff9         # Perform actions in flow table.
                                # NB: This can only be the destination
                                # port for packet-out messages.
OFPP_NORMAL = 0xfffffffa        # Process with normal L2/L3 switching.
OFPP_FLOOD = 0xfffffffb         # All physical ports except input port and
                                # those disabled by STP.
OFPP_ALL = 0xfffffffc           # All physical ports except input port.
OFPP_CONTROLLER = 0xfffffffd    # Send to controller.  這是讓交換機將數據包發送給控制器《重點》
OFPP_LOCAL = 0xfffffffe         # Local openflow "port".
OFPP_ANY = 0xffffffff             # Not associated with a physical port.
actions = [ofp_parser.OFPActionOutput(ofproto.OFPP_CONTROLLER,ofproto.OFPCML_NO_BUFFER)] 流表項動作表示將數據包發送給控制器
# enum ofp_controller_max_len
OFPCML_MAX = 0xffe5         # maximum max_len value which can be used to    可用于請求特定字節長度的最大Max值。(是向控制器請求的最大數據長度)
                            # request a specific byte length.
OFPCML_NO_BUFFER = 0xffff   # indicates that no buffering should be    指示不應應用緩沖,并且將整個數據包發送到控制器
                            # applied and the whole packet is to be
                            # sent to the controller.
actions = [ofp_parser.OFPActionOutput(ofproto.OFPP_CONTROLLER,ofproto.OFPCML_NO_BUFFER)] 表示交換機中不用緩存數據包,全部發送給控制器即可

12.@set_ev_cls(ofp_event.EventOFPSwitchFeatures,CONFIG_DISPATCHER)中的事件,由ofp_event下面的代碼動態生成

NAME = 'ofp_event'


class EventOFPMsgBase(event.EventBase):
    """
    The base class of OpenFlow event class.

    OpenFlow event classes have at least the following attributes.

    .. tabularcolumns:: |l|L|

    ============ ==============================================================
    Attribute    Description
    ============ ==============================================================
    msg          An object which describes the corresponding OpenFlow message.
    msg.datapath A ryu.controller.controller.Datapath instance
                 which describes an OpenFlow switch from which we received
                 this OpenFlow message.
    timestamp    Timestamp when Datapath instance generated this event.
    ============ ==============================================================

    The msg object has some more additional members whose values are extracted
    from the original OpenFlow message.
    """

    def __init__(self, msg):
        self.timestamp = time.time()
        super(EventOFPMsgBase, self).__init__()
        self.msg = msg


#
# Create ofp_event type corresponding to OFP Msg
#

_OFP_MSG_EVENTS = {}


def _ofp_msg_name_to_ev_name(msg_name):
    return 'Event' + msg_name


def ofp_msg_to_ev(msg):
    return ofp_msg_to_ev_cls(msg.__class__)(msg)


def ofp_msg_to_ev_cls(msg_cls):
    name = _ofp_msg_name_to_ev_name(msg_cls.__name__)
    return _OFP_MSG_EVENTS[name]


def _create_ofp_msg_ev_class(msg_cls):
    name = _ofp_msg_name_to_ev_name(msg_cls.__name__)
    # print 'creating ofp_event %s' % name

    if name in _OFP_MSG_EVENTS:
        return

    cls = type(name, (EventOFPMsgBase,),
               dict(__init__=lambda self, msg:
                    super(self.__class__, self).__init__(msg)))
    globals()[name] = cls
    _OFP_MSG_EVENTS[name] = cls


def _create_ofp_msg_ev_from_module(ofp_parser):
    # print mod
    for _k, cls in inspect.getmembers(ofp_parser, inspect.isclass):
        if not hasattr(cls, 'cls_msg_type'):
            continue
        _create_ofp_msg_ev_class(cls)


for ofp_mods in ofproto.get_ofp_modules().values():
    ofp_parser = ofp_mods[1]
    # print 'loading module %s' % ofp_parser
    _create_ofp_msg_ev_from_module(ofp_parser)

總結

以上是生活随笔為你收集整理的SDN实验---Ryu的应用开发(一)Hub实现的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

国产绳艺sm调教室论坛 | 亚洲人成影院在线观看 | 性生交大片免费看女人按摩摩 | 四虎国产精品一区二区 | 国模大胆一区二区三区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 亚洲成a人片在线观看日本 | 欧美日韩综合一区二区三区 | 国产精品爱久久久久久久 | 丰满人妻一区二区三区免费视频 | 精品无码av一区二区三区 | 亚洲aⅴ无码成人网站国产app | 成熟人妻av无码专区 | 国产成人无码午夜视频在线观看 | 激情综合激情五月俺也去 | 欧美 日韩 人妻 高清 中文 | 精品欧美一区二区三区久久久 | 免费视频欧美无人区码 | 成人无码视频在线观看网站 | 人人妻人人澡人人爽欧美一区九九 | 黑人大群体交免费视频 | 丰满妇女强制高潮18xxxx | 图片区 小说区 区 亚洲五月 | 久久国产精品二国产精品 | 欧美自拍另类欧美综合图片区 | 欧美性猛交xxxx富婆 | 成熟妇人a片免费看网站 | 在线观看欧美一区二区三区 | 一个人看的www免费视频在线观看 | 亚洲一区二区三区播放 | 漂亮人妻洗澡被公强 日日躁 | 久久亚洲中文字幕无码 | 国产色xx群视频射精 | 久久精品人妻少妇一区二区三区 | 亚洲性无码av中文字幕 | 亚洲一区二区三区国产精华液 | 国产一区二区三区四区五区加勒比 | 国产香蕉97碰碰久久人人 | 欧美精品国产综合久久 | 亚洲精品一区国产 | 国产av久久久久精东av | 一二三四在线观看免费视频 | 国产精品丝袜黑色高跟鞋 | 久久99精品久久久久久 | 国产成人午夜福利在线播放 | 蜜桃视频插满18在线观看 | 无码成人精品区在线观看 | 四虎4hu永久免费 | 人人妻人人澡人人爽人人精品浪潮 | 自拍偷自拍亚洲精品被多人伦好爽 | 狠狠噜狠狠狠狠丁香五月 | 日本一卡2卡3卡四卡精品网站 | 国产午夜无码精品免费看 | 九九久久精品国产免费看小说 | 曰本女人与公拘交酡免费视频 | 成熟女人特级毛片www免费 | 台湾无码一区二区 | 精品成在人线av无码免费看 | 全黄性性激高免费视频 | 日本免费一区二区三区最新 | 亚洲男人av天堂午夜在 | 奇米影视888欧美在线观看 | 亚洲色欲久久久综合网东京热 | 久久www免费人成人片 | 国产日产欧产精品精品app | 中文字幕人妻无码一夲道 | 伊在人天堂亚洲香蕉精品区 | 综合人妻久久一区二区精品 | 麻豆精产国品 | а√天堂www在线天堂小说 | 性生交大片免费看l | 国产麻豆精品精东影业av网站 | 男女性色大片免费网站 | 初尝人妻少妇中文字幕 | 亚洲精品国产品国语在线观看 | 免费播放一区二区三区 | 日日鲁鲁鲁夜夜爽爽狠狠 | 国产成人无码a区在线观看视频app | av无码电影一区二区三区 | 亚洲精品久久久久久一区二区 | 美女扒开屁股让男人桶 | 一个人看的www免费视频在线观看 | 国产人妻精品午夜福利免费 | 亚洲gv猛男gv无码男同 | 久久99热只有频精品8 | av无码电影一区二区三区 | 在线精品国产一区二区三区 | 沈阳熟女露脸对白视频 | 亚洲欧美色中文字幕在线 | 欧美大屁股xxxxhd黑色 | 日日干夜夜干 | 久久精品国产日本波多野结衣 | 欧美性生交活xxxxxdddd | 少妇性l交大片欧洲热妇乱xxx | 俺去俺来也在线www色官网 | 国产成人无码午夜视频在线观看 | 日韩在线不卡免费视频一区 | 帮老师解开蕾丝奶罩吸乳网站 | 动漫av一区二区在线观看 | 亚洲一区二区三区无码久久 | 日本xxxx色视频在线观看免费 | 久在线观看福利视频 | 网友自拍区视频精品 | 婷婷五月综合激情中文字幕 | 草草网站影院白丝内射 | 亚洲综合无码一区二区三区 | 国内少妇偷人精品视频免费 | 亚洲成熟女人毛毛耸耸多 | 成人精品天堂一区二区三区 | 夜夜夜高潮夜夜爽夜夜爰爰 | 国产高清av在线播放 | 女高中生第一次破苞av | 国产精品办公室沙发 | 人人澡人摸人人添 | 亚洲日韩中文字幕在线播放 | 国产农村妇女aaaaa视频 撕开奶罩揉吮奶头视频 | 奇米影视888欧美在线观看 | 麻豆人妻少妇精品无码专区 | 少妇一晚三次一区二区三区 | 丰满少妇高潮惨叫视频 | 亚洲日韩av片在线观看 | 国产sm调教视频在线观看 | 国产人妻久久精品二区三区老狼 | 国产精品99爱免费视频 | 中文字幕无线码免费人妻 | 性开放的女人aaa片 | aa片在线观看视频在线播放 | 国产无套内射久久久国产 | 小泽玛莉亚一区二区视频在线 | 伊人久久大香线焦av综合影院 | 久久精品女人天堂av免费观看 | 激情五月综合色婷婷一区二区 | 综合网日日天干夜夜久久 | 精品一区二区三区波多野结衣 | a国产一区二区免费入口 | 亚洲 激情 小说 另类 欧美 | 真人与拘做受免费视频 | а√天堂www在线天堂小说 | 久久婷婷五月综合色国产香蕉 | 成人精品视频一区二区三区尤物 | 一二三四社区在线中文视频 | 欧美黑人性暴力猛交喷水 | 欧美精品一区二区精品久久 | 久久久亚洲欧洲日产国码αv | 久久亚洲精品成人无码 | 中文字幕人妻无码一区二区三区 | 给我免费的视频在线观看 | 无码国产色欲xxxxx视频 | 久久久久久亚洲精品a片成人 | 女高中生第一次破苞av | 在线播放无码字幕亚洲 | 成人一在线视频日韩国产 | 久久精品国产精品国产精品污 | 精品乱码久久久久久久 | 国产精品鲁鲁鲁 | 久久久久久久女国产乱让韩 | 秋霞特色aa大片 | 暴力强奷在线播放无码 | 久久综合色之久久综合 | 日韩成人一区二区三区在线观看 | 国内揄拍国内精品少妇国语 | 精品一区二区三区波多野结衣 | 一本久久a久久精品亚洲 | 性做久久久久久久免费看 | 国产av久久久久精东av | 国产激情无码一区二区app | 国内精品人妻无码久久久影院 | 性欧美videos高清精品 | 亚洲日本va午夜在线电影 | 国产九九九九九九九a片 | 精品欧洲av无码一区二区三区 | 亚洲国产精品久久久久久 | 欧洲vodafone精品性 | 国产舌乚八伦偷品w中 | 免费无码的av片在线观看 | av在线亚洲欧洲日产一区二区 | 亚洲国产av美女网站 | 欧美日韩人成综合在线播放 | 亚洲熟妇色xxxxx欧美老妇y | 国产精品va在线观看无码 | 久久久久亚洲精品男人的天堂 | 熟女俱乐部五十路六十路av | 亚洲s码欧洲m码国产av | 精品日本一区二区三区在线观看 | 国产成人久久精品流白浆 | 999久久久国产精品消防器材 | 亚洲中文字幕在线无码一区二区 | 日日摸天天摸爽爽狠狠97 | 久久综合给久久狠狠97色 | 久久www免费人成人片 | 国产在线aaa片一区二区99 | 久久午夜夜伦鲁鲁片无码免费 | 国产精品视频免费播放 | 无码人妻精品一区二区三区下载 | 色综合久久久无码中文字幕 | 97夜夜澡人人爽人人喊中国片 | 久久97精品久久久久久久不卡 | 少妇被黑人到高潮喷出白浆 | 国产高清不卡无码视频 | 日日噜噜噜噜夜夜爽亚洲精品 | 亚洲精品国产第一综合99久久 | 扒开双腿疯狂进出爽爽爽视频 | 久久婷婷五月综合色国产香蕉 | a国产一区二区免费入口 | 久久人妻内射无码一区三区 | √8天堂资源地址中文在线 | 精品乱码久久久久久久 | 亚洲成av人在线观看网址 | 正在播放老肥熟妇露脸 | 亚洲成av人片在线观看无码不卡 | 伊人久久大香线焦av综合影院 | 国产特级毛片aaaaaa高潮流水 | 无码人妻精品一区二区三区下载 | 亚洲爆乳大丰满无码专区 | 黑人巨大精品欧美黑寡妇 | 久久无码专区国产精品s | 性欧美熟妇videofreesex | 久久久国产精品无码免费专区 | 麻豆国产丝袜白领秘书在线观看 | 狠狠色噜噜狠狠狠狠7777米奇 | 国精产品一区二区三区 | 无套内射视频囯产 | 亚洲日本在线电影 | 日韩精品无码免费一区二区三区 | 玩弄人妻少妇500系列视频 | 野外少妇愉情中文字幕 | 水蜜桃av无码 | 精品久久8x国产免费观看 | 日韩亚洲欧美中文高清在线 | 内射后入在线观看一区 | 男人扒开女人内裤强吻桶进去 | 日本护士毛茸茸高潮 | 亚洲成在人网站无码天堂 | aa片在线观看视频在线播放 | 欧美大屁股xxxxhd黑色 | 精品久久综合1区2区3区激情 | 51国偷自产一区二区三区 | 亚洲欧洲无卡二区视頻 | a国产一区二区免费入口 | 欧美兽交xxxx×视频 | 欧美人与动性行为视频 | 国内精品久久久久久中文字幕 | 精品一区二区三区无码免费视频 | 红桃av一区二区三区在线无码av | 在教室伦流澡到高潮hnp视频 | 久久久久99精品国产片 | 性啪啪chinese东北女人 | 成年美女黄网站色大免费视频 | 亚洲国产精品无码一区二区三区 | 成人动漫在线观看 | 国产乡下妇女做爰 | 久久99精品久久久久久动态图 | 婷婷六月久久综合丁香 | 亚洲国产一区二区三区在线观看 | 无码av中文字幕免费放 | 亚洲精品国产精品乱码不卡 | 国精品人妻无码一区二区三区蜜柚 | 久久99精品国产麻豆 | 强开小婷嫩苞又嫩又紧视频 | 国产成人精品久久亚洲高清不卡 | 日韩人妻无码一区二区三区久久99 | 欧美日韩视频无码一区二区三 | 给我免费的视频在线观看 | 亚洲精品一区二区三区在线 | 51国偷自产一区二区三区 | 欧美三级a做爰在线观看 | 丰满少妇熟乱xxxxx视频 | 嫩b人妻精品一区二区三区 | 国产成人综合美国十次 | 亚洲国产av美女网站 | 在线天堂新版最新版在线8 | 国产欧美熟妇另类久久久 | 国产免费久久久久久无码 | 日日摸天天摸爽爽狠狠97 | 久久精品人人做人人综合试看 | 色婷婷久久一区二区三区麻豆 | 国产av久久久久精东av | 亚洲精品综合一区二区三区在线 | 永久免费观看美女裸体的网站 | 女高中生第一次破苞av | 日本一本二本三区免费 | 伊在人天堂亚洲香蕉精品区 | 黑人巨大精品欧美黑寡妇 | 亚洲一区二区三区无码久久 | 无码国产乱人伦偷精品视频 | 日韩欧美中文字幕在线三区 | 熟妇人妻无码xxx视频 | 亚洲欧美日韩国产精品一区二区 | 久久久久久九九精品久 | 丁香啪啪综合成人亚洲 | 沈阳熟女露脸对白视频 | 国产精品美女久久久久av爽李琼 | 中文字幕乱码人妻二区三区 | 免费无码午夜福利片69 | 露脸叫床粗话东北少妇 | 美女极度色诱视频国产 | 日韩亚洲欧美中文高清在线 | 天下第一社区视频www日本 | 国产亚洲精品久久久ai换 | 国产欧美精品一区二区三区 | 国产精品美女久久久网av | 特黄特色大片免费播放器图片 | 日韩精品无码免费一区二区三区 | 国产性生交xxxxx无码 | 乱人伦人妻中文字幕无码久久网 | 欧美 日韩 人妻 高清 中文 | 国产三级精品三级男人的天堂 | 麻豆国产人妻欲求不满谁演的 | 国产在线精品一区二区高清不卡 | 日本熟妇大屁股人妻 | 初尝人妻少妇中文字幕 | 俺去俺来也www色官网 | 天堂亚洲2017在线观看 | 高潮毛片无遮挡高清免费 | 国产莉萝无码av在线播放 | 国模大胆一区二区三区 | 亚洲一区二区观看播放 | 牲交欧美兽交欧美 | 波多野42部无码喷潮在线 | 亚洲综合另类小说色区 | 国产亚av手机在线观看 | 亚洲精品成a人在线观看 | 少妇太爽了在线观看 | 国产色视频一区二区三区 | 熟妇人妻中文av无码 | 99久久久国产精品无码免费 | 成熟妇人a片免费看网站 | 呦交小u女精品视频 | 一本加勒比波多野结衣 | 一本精品99久久精品77 | 无遮挡啪啪摇乳动态图 | 曰韩无码二三区中文字幕 | 最新国产麻豆aⅴ精品无码 | 色一情一乱一伦一区二区三欧美 | 欧美国产日韩久久mv | 亚洲日本在线电影 | 色偷偷av老熟女 久久精品人妻少妇一区二区三区 | 国产精品va在线播放 | 成人毛片一区二区 | 色婷婷香蕉在线一区二区 | 国产精品福利视频导航 | 国产美女极度色诱视频www | 国产特级毛片aaaaaa高潮流水 | 免费观看激色视频网站 | 亚洲色大成网站www国产 | 欧美日韩亚洲国产精品 | aa片在线观看视频在线播放 | 国产精品久久久久久亚洲毛片 | 亚洲国产日韩a在线播放 | 色欲av亚洲一区无码少妇 | 国产精品a成v人在线播放 | 亚洲国产一区二区三区在线观看 | 欧美 亚洲 国产 另类 | 亚洲国精产品一二二线 | 免费无码一区二区三区蜜桃大 | 少妇人妻大乳在线视频 | 国产成人午夜福利在线播放 | 亚洲国产精品久久久天堂 | 久久久国产精品无码免费专区 | 国产 精品 自在自线 | 久久aⅴ免费观看 | 国产精品.xx视频.xxtv | 国产色在线 | 国产 | 国产做国产爱免费视频 | 少妇被黑人到高潮喷出白浆 | 无码人妻黑人中文字幕 | 狠狠色噜噜狠狠狠狠7777米奇 | 国产两女互慰高潮视频在线观看 | 性生交大片免费看女人按摩摩 | 永久免费观看国产裸体美女 | 无码中文字幕色专区 | 精品无码国产自产拍在线观看蜜 | 人人妻人人澡人人爽欧美一区 | 亚洲春色在线视频 | 日本一卡二卡不卡视频查询 | 久久久久av无码免费网 | 日本www一道久久久免费榴莲 | 成熟女人特级毛片www免费 | 国产 浪潮av性色四虎 | 亚洲第一无码av无码专区 | 少妇太爽了在线观看 | 亚洲国精产品一二二线 | 亚洲国产精品无码一区二区三区 | 免费观看又污又黄的网站 | 国内精品久久久久久中文字幕 | 国产精品美女久久久网av | 精品无码av一区二区三区 | 中文字幕久久久久人妻 | 天堂а√在线中文在线 | 国产精品国产三级国产专播 | 精品久久久中文字幕人妻 | 麻豆精品国产精华精华液好用吗 | 成人动漫在线观看 | 色婷婷久久一区二区三区麻豆 | 免费乱码人妻系列无码专区 | 无套内谢的新婚少妇国语播放 | 国产精品无码一区二区三区不卡 | 亚洲伊人久久精品影院 | 欧美老妇与禽交 | 久久精品国产日本波多野结衣 | 免费无码肉片在线观看 | 国产人妖乱国产精品人妖 | 无码帝国www无码专区色综合 | √8天堂资源地址中文在线 | 性做久久久久久久免费看 | 亚洲成a人片在线观看无码 | 内射爽无广熟女亚洲 | 草草网站影院白丝内射 | 国产人妻精品一区二区三区不卡 | 精品国产国产综合精品 | 色狠狠av一区二区三区 | 男人的天堂av网站 | 麻豆果冻传媒2021精品传媒一区下载 | 丁香啪啪综合成人亚洲 | 中文字幕乱码亚洲无线三区 | 欧美日韩综合一区二区三区 | 亚洲国产欧美日韩精品一区二区三区 | 国内精品人妻无码久久久影院蜜桃 | 久久国产精品萌白酱免费 | 一个人看的www免费视频在线观看 | 久久精品女人天堂av免费观看 | 精品久久久中文字幕人妻 | 亚洲成a人片在线观看无码 | 久久亚洲国产成人精品性色 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 六月丁香婷婷色狠狠久久 | 久久国产精品萌白酱免费 | 欧美国产日韩久久mv | 国产精品成人av在线观看 | 亚洲中文字幕久久无码 | 亚洲中文字幕在线无码一区二区 | 人人超人人超碰超国产 | 日产精品99久久久久久 | a片在线免费观看 | 国产成人av免费观看 | 小鲜肉自慰网站xnxx | 精品人妻人人做人人爽 | 国产精品美女久久久网av | 日韩精品无码一本二本三本色 | 成人性做爰aaa片免费看 | 亚洲精品一区三区三区在线观看 | 精品久久久久久亚洲精品 | 国产精品久久久久9999小说 | 亚洲色大成网站www | 国产精品毛多多水多 | 亚洲欧美精品aaaaaa片 | 精品熟女少妇av免费观看 | 亚洲精品一区二区三区大桥未久 | 久久99精品国产.久久久久 | 国产成人亚洲综合无码 | 久久精品视频在线看15 | 爆乳一区二区三区无码 | 伊人久久大香线蕉午夜 | 婷婷丁香五月天综合东京热 | 亚洲欧洲日本无在线码 | 欧美国产亚洲日韩在线二区 | 红桃av一区二区三区在线无码av | 欧美成人家庭影院 | 国产午夜手机精彩视频 | 欧美国产日韩亚洲中文 | 天下第一社区视频www日本 | 国产精品99爱免费视频 | 久久久久久久久蜜桃 | 免费播放一区二区三区 | 色妞www精品免费视频 | 日本免费一区二区三区最新 | 亚洲日韩av片在线观看 | 国产超级va在线观看视频 | 国产亚洲精品久久久闺蜜 | 老子影院午夜伦不卡 | 亚洲精品一区二区三区在线观看 | 性欧美大战久久久久久久 | 亚洲综合久久一区二区 | 少妇性l交大片欧洲热妇乱xxx | 天干天干啦夜天干天2017 | 天堂在线观看www | www成人国产高清内射 | 成人av无码一区二区三区 | 人人妻人人澡人人爽人人精品 | 四虎国产精品免费久久 | 国产色xx群视频射精 | 人妻互换免费中文字幕 | 国产午夜无码精品免费看 | 国产精品亚洲lv粉色 | 久久国内精品自在自线 | 欧美日本日韩 | 99久久99久久免费精品蜜桃 | a片在线免费观看 | 欧美老熟妇乱xxxxx | aⅴ亚洲 日韩 色 图网站 播放 | 国产人妖乱国产精品人妖 | 人人妻人人澡人人爽人人精品浪潮 | 67194成是人免费无码 | 撕开奶罩揉吮奶头视频 | 日本高清一区免费中文视频 | 青春草在线视频免费观看 | 天堂无码人妻精品一区二区三区 | 色综合久久88色综合天天 | 狠狠亚洲超碰狼人久久 | 国产凸凹视频一区二区 | 亲嘴扒胸摸屁股激烈网站 | 国产亚洲欧美日韩亚洲中文色 | 欧美性黑人极品hd | 欧美日韩一区二区免费视频 | 女人被男人爽到呻吟的视频 | 欧美日本免费一区二区三区 | 国产精品理论片在线观看 | 久久精品人人做人人综合 | 亚洲精品久久久久中文第一幕 | 国产成人无码午夜视频在线观看 | 国产69精品久久久久app下载 | 狠狠色噜噜狠狠狠狠7777米奇 | 天堂无码人妻精品一区二区三区 | 伊人久久大香线焦av综合影院 | 色综合久久网 | 亚洲综合在线一区二区三区 | 2019午夜福利不卡片在线 | ass日本丰满熟妇pics | 蜜桃视频插满18在线观看 | 1000部啪啪未满十八勿入下载 | 国产农村妇女高潮大叫 | 无遮挡国产高潮视频免费观看 | 久久久久人妻一区精品色欧美 | 老熟女乱子伦 | 日本高清一区免费中文视频 | 日日夜夜撸啊撸 | 国产在线一区二区三区四区五区 | 狂野欧美性猛交免费视频 | 日本成熟视频免费视频 | 国内揄拍国内精品少妇国语 | 国精产品一品二品国精品69xx | 无码av免费一区二区三区试看 | 国产精品高潮呻吟av久久4虎 | 男人和女人高潮免费网站 | 国产精品无码永久免费888 | 少妇性l交大片 | 人妻体内射精一区二区三四 | 国产精品亚洲综合色区韩国 | 欧美肥老太牲交大战 | 无码人妻丰满熟妇区毛片18 | 欧美熟妇另类久久久久久不卡 | 国产亚洲精品久久久久久久久动漫 | 久久这里只有精品视频9 | 免费国产成人高清在线观看网站 | 亚洲欧美国产精品专区久久 | 久久精品中文闷骚内射 | 欧美 日韩 亚洲 在线 | 精品国产乱码久久久久乱码 | 无码国内精品人妻少妇 | 精品亚洲成av人在线观看 | 国产人成高清在线视频99最全资源 | 激情内射亚州一区二区三区爱妻 | 久久精品一区二区三区四区 | 青草青草久热国产精品 | 中文字幕无码日韩专区 | 2019午夜福利不卡片在线 | 精品熟女少妇av免费观看 | 97精品人妻一区二区三区香蕉 | 亚洲成av人影院在线观看 | 日日碰狠狠丁香久燥 | 国产两女互慰高潮视频在线观看 | 久久久www成人免费毛片 | 亚洲无人区午夜福利码高清完整版 | 国产精品自产拍在线观看 | 人妻少妇精品无码专区动漫 | 无码一区二区三区在线 | 国产精品久久久久7777 | 国产欧美亚洲精品a | 国内揄拍国内精品人妻 | 无码人妻黑人中文字幕 | 成 人影片 免费观看 | 国产乱人无码伦av在线a | 欧美老熟妇乱xxxxx | 天天摸天天透天天添 | 精品欧美一区二区三区久久久 | 国产亚洲精品久久久久久大师 | 亚洲精品国产a久久久久久 | 欧美日本精品一区二区三区 | 色婷婷综合激情综在线播放 | 亚洲欧洲无卡二区视頻 | 国产亚洲精品久久久久久大师 | 毛片内射-百度 | 台湾无码一区二区 | 日本爽爽爽爽爽爽在线观看免 | 欧洲vodafone精品性 | 国产后入清纯学生妹 | 国产国产精品人在线视 | 98国产精品综合一区二区三区 | 人妻aⅴ无码一区二区三区 | 国产国产精品人在线视 | 国内精品人妻无码久久久影院 | 欧美日韩久久久精品a片 | 国产sm调教视频在线观看 | 色综合久久88色综合天天 | 亚洲精品成a人在线观看 | 国精品人妻无码一区二区三区蜜柚 | 狠狠亚洲超碰狼人久久 | 久久 国产 尿 小便 嘘嘘 | 午夜精品久久久久久久久 | 亚洲综合伊人久久大杳蕉 | 精品一区二区三区无码免费视频 | 无码精品人妻一区二区三区av | 亚洲国产成人av在线观看 | 亚洲成av人影院在线观看 | 无码午夜成人1000部免费视频 | 国产激情艳情在线看视频 | 色婷婷av一区二区三区之红樱桃 | 亚洲中文字幕av在天堂 | 伊人久久大香线蕉av一区二区 | 国产人妻精品午夜福利免费 | 国产亲子乱弄免费视频 | 久久久久成人精品免费播放动漫 | 天天拍夜夜添久久精品 | 久久久久亚洲精品中文字幕 | 东京热一精品无码av | 久久人人爽人人爽人人片av高清 | 内射巨臀欧美在线视频 | 免费观看激色视频网站 | 国产在线精品一区二区高清不卡 | 国产明星裸体无码xxxx视频 | 中文字幕+乱码+中文字幕一区 | 少妇性l交大片欧洲热妇乱xxx | 在线观看欧美一区二区三区 | 亚洲人成网站在线播放942 | 人妻尝试又大又粗久久 | 国产亚洲日韩欧美另类第八页 | 成人无码影片精品久久久 | 日本一区二区三区免费高清 | 欧美丰满熟妇xxxx | 内射巨臀欧美在线视频 | 少妇一晚三次一区二区三区 | 国产又粗又硬又大爽黄老大爷视 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产亚洲人成在线播放 | 亚洲一区二区三区在线观看网站 | 少妇高潮喷潮久久久影院 | v一区无码内射国产 | 妺妺窝人体色www婷婷 | 四虎国产精品一区二区 | 欧美性猛交内射兽交老熟妇 | 亚洲一区二区三区 | 亚洲中文字幕va福利 | 成 人影片 免费观看 | 天堂无码人妻精品一区二区三区 | 黑人巨大精品欧美黑寡妇 | 日本爽爽爽爽爽爽在线观看免 | 精品无人国产偷自产在线 | 一本久道久久综合婷婷五月 | 日日摸夜夜摸狠狠摸婷婷 | 人妻熟女一区 | 欧美精品无码一区二区三区 | 亚洲精品久久久久久一区二区 | 国产成人无码区免费内射一片色欲 | 精品国产国产综合精品 | 国产午夜福利亚洲第一 | 亚洲日本在线电影 | 无码人妻出轨黑人中文字幕 | 久久人人97超碰a片精品 | 久久99精品国产麻豆蜜芽 | 麻花豆传媒剧国产免费mv在线 | 内射巨臀欧美在线视频 | 中文字幕av伊人av无码av | 国产色xx群视频射精 | 亚洲色大成网站www | 国产极品视觉盛宴 | 人妻尝试又大又粗久久 | 国产成人精品优优av | 日日碰狠狠丁香久燥 | 亚洲爆乳精品无码一区二区三区 | 丁香花在线影院观看在线播放 | 中文字幕av伊人av无码av | 人妻熟女一区 | 欧美老人巨大xxxx做受 | 亚洲伊人久久精品影院 | 无码成人精品区在线观看 | 久久国语露脸国产精品电影 | 久久精品国产日本波多野结衣 | 成人av无码一区二区三区 | 日韩无套无码精品 | 免费观看的无遮挡av | 久久精品女人的天堂av | 亚洲爆乳精品无码一区二区三区 | 国产成人精品三级麻豆 | 国内揄拍国内精品少妇国语 | 国产精品无套呻吟在线 | 国产热a欧美热a在线视频 | 亚洲精品一区二区三区大桥未久 | 全黄性性激高免费视频 | 人人澡人人妻人人爽人人蜜桃 | 波多野结衣 黑人 | 亚洲人亚洲人成电影网站色 | 成人无码视频免费播放 | 国产精品亚洲一区二区三区喷水 | 国产真实乱对白精彩久久 | 日韩少妇白浆无码系列 | 亚洲熟妇色xxxxx亚洲 | 亚洲精品成人福利网站 | 毛片内射-百度 | a片免费视频在线观看 | 精品国偷自产在线视频 | 成人精品天堂一区二区三区 | 久9re热视频这里只有精品 | 精品人人妻人人澡人人爽人人 | 欧美性色19p | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 亚洲一区二区三区播放 | 久久zyz资源站无码中文动漫 | 永久黄网站色视频免费直播 | 国产精品美女久久久久av爽李琼 | 国产黄在线观看免费观看不卡 | 给我免费的视频在线观看 | 欧美黑人性暴力猛交喷水 | 日本高清一区免费中文视频 | 成人性做爰aaa片免费看不忠 | 日韩av激情在线观看 | 国产欧美精品一区二区三区 | 亚洲日韩一区二区 | 亚洲精品综合五月久久小说 | 最近免费中文字幕中文高清百度 | 国产性生交xxxxx无码 | 人妻无码αv中文字幕久久琪琪布 | 国产无遮挡又黄又爽免费视频 | 娇妻被黑人粗大高潮白浆 | 亚洲日韩乱码中文无码蜜桃臀网站 | 77777熟女视频在线观看 а天堂中文在线官网 | 欧美 日韩 人妻 高清 中文 | 亚洲国产精品一区二区美利坚 | 日本乱偷人妻中文字幕 | 四虎影视成人永久免费观看视频 | 青青久在线视频免费观看 | 久久精品人人做人人综合试看 | 亚洲成在人网站无码天堂 | 亚洲无人区一区二区三区 | 国产午夜精品一区二区三区嫩草 | 2020最新国产自产精品 | 麻豆精品国产精华精华液好用吗 | 九月婷婷人人澡人人添人人爽 | 精品久久久久久人妻无码中文字幕 | 亚洲熟妇色xxxxx欧美老妇 | 国内少妇偷人精品视频免费 | 女高中生第一次破苞av | 精品一区二区不卡无码av | 精品国精品国产自在久国产87 | 国产精品国产三级国产专播 | 欧美乱妇无乱码大黄a片 | 色偷偷人人澡人人爽人人模 | 日韩精品无码免费一区二区三区 | 精品久久综合1区2区3区激情 | 免费国产成人高清在线观看网站 | 夜夜高潮次次欢爽av女 | 无套内谢的新婚少妇国语播放 | 女人高潮内射99精品 | 亚洲人交乣女bbw | 女人被男人躁得好爽免费视频 | 又大又黄又粗又爽的免费视频 | 激情爆乳一区二区三区 | 日韩欧美群交p片內射中文 | 久久久久亚洲精品男人的天堂 | 欧美日韩人成综合在线播放 | 亚洲色偷偷偷综合网 | 亚洲综合久久一区二区 | 窝窝午夜理论片影院 | 丝袜 中出 制服 人妻 美腿 | 国产精品亚洲一区二区三区喷水 | 中文字幕无码人妻少妇免费 | 日韩精品久久久肉伦网站 | 装睡被陌生人摸出水好爽 | 大肉大捧一进一出视频出来呀 | 亚洲国精产品一二二线 | 熟女少妇在线视频播放 | 中文无码精品a∨在线观看不卡 | 伦伦影院午夜理论片 | 午夜性刺激在线视频免费 | 精品亚洲韩国一区二区三区 | 嫩b人妻精品一区二区三区 | 久久久久久a亚洲欧洲av冫 | 最近免费中文字幕中文高清百度 | 东京热无码av男人的天堂 | 色综合视频一区二区三区 | 精品国产乱码久久久久乱码 | 色婷婷香蕉在线一区二区 | 精品欧美一区二区三区久久久 | 国产欧美熟妇另类久久久 | 精品一区二区不卡无码av | 国产9 9在线 | 中文 | 丁香花在线影院观看在线播放 | 国产农村妇女高潮大叫 | 国产办公室秘书无码精品99 | 日本熟妇人妻xxxxx人hd | 午夜精品久久久久久久 | 国产精品嫩草久久久久 | 99在线 | 亚洲 | 久久久久国色av免费观看性色 | 久久zyz资源站无码中文动漫 | 丰满少妇弄高潮了www | 中文字幕av日韩精品一区二区 | 国产麻豆精品一区二区三区v视界 | 亚洲精品国偷拍自产在线观看蜜桃 | 国产亚洲精品久久久久久国模美 | 精品国产av色一区二区深夜久久 | 亚洲国产精品久久人人爱 | 国产97在线 | 亚洲 | 久久午夜夜伦鲁鲁片无码免费 | 一区二区三区乱码在线 | 欧洲 | 国产熟女一区二区三区四区五区 | 狠狠躁日日躁夜夜躁2020 | 国产精品无码一区二区三区不卡 | 中文字幕无码视频专区 | 性欧美videos高清精品 | 久久综合九色综合欧美狠狠 | yw尤物av无码国产在线观看 | 亚洲精品一区二区三区大桥未久 | 少妇激情av一区二区 | 亚洲一区二区三区播放 | 久久久精品456亚洲影院 | 高清不卡一区二区三区 | 亚洲成a人片在线观看日本 | 97久久国产亚洲精品超碰热 | 亚洲最大成人网站 | 亚洲欧洲日本综合aⅴ在线 | 中文字幕无码免费久久99 | 国产成人久久精品流白浆 | 日韩视频 中文字幕 视频一区 | a片在线免费观看 | 99久久亚洲精品无码毛片 | 久久无码人妻影院 | 丰满妇女强制高潮18xxxx | 久久精品中文字幕一区 | 无码国产乱人伦偷精品视频 | 性欧美大战久久久久久久 | 国产av久久久久精东av | 亚洲の无码国产の无码步美 | 老熟妇乱子伦牲交视频 | 老熟妇乱子伦牲交视频 | 亚洲精品午夜国产va久久成人 | 国产激情综合五月久久 | 男女下面进入的视频免费午夜 | 亚洲の无码国产の无码影院 | 国产亚洲日韩欧美另类第八页 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 久久综合久久自在自线精品自 | 天天躁日日躁狠狠躁免费麻豆 | 亚洲成a人片在线观看无码3d | 国产午夜无码视频在线观看 | 中文字幕色婷婷在线视频 | 亚洲中文字幕久久无码 | 亚洲日本va午夜在线电影 | 九九在线中文字幕无码 | 亚洲色偷偷偷综合网 | 国产午夜亚洲精品不卡 | 中国女人内谢69xxxx | 夜夜高潮次次欢爽av女 | 夜精品a片一区二区三区无码白浆 | 精品国产一区二区三区av 性色 | 久久久久国色av免费观看性色 | 亚洲熟妇自偷自拍另类 | 国产无遮挡又黄又爽又色 | 亚洲色在线无码国产精品不卡 | 国产精品自产拍在线观看 | 国产精品无码成人午夜电影 | 久久亚洲中文字幕精品一区 | 欧美性猛交内射兽交老熟妇 | 亚洲色在线无码国产精品不卡 | 对白脏话肉麻粗话av | 成人欧美一区二区三区黑人免费 | 国产精品久久久久久无码 | 亚洲日韩一区二区 | 日韩av激情在线观看 | 熟女少妇人妻中文字幕 | 夜精品a片一区二区三区无码白浆 | 久久99精品国产.久久久久 | 国产亚洲欧美在线专区 | 久久久无码中文字幕久... | 3d动漫精品啪啪一区二区中 | 中文无码伦av中文字幕 | 国产内射爽爽大片视频社区在线 | 88国产精品欧美一区二区三区 | yw尤物av无码国产在线观看 | 久久亚洲日韩精品一区二区三区 | 国产精品嫩草久久久久 | 精品乱码久久久久久久 | 亚洲精品欧美二区三区中文字幕 | 久久久av男人的天堂 | 国产69精品久久久久app下载 | 成人aaa片一区国产精品 | 玩弄少妇高潮ⅹxxxyw | 国产两女互慰高潮视频在线观看 | 老司机亚洲精品影院 | 狠狠cao日日穞夜夜穞av | 麻豆国产人妻欲求不满 | 麻豆md0077饥渴少妇 | 一本大道久久东京热无码av | 国产熟妇高潮叫床视频播放 | 国产人妻精品一区二区三区不卡 | 成人女人看片免费视频放人 | 亚洲国产欧美国产综合一区 | 精品无码成人片一区二区98 | 亚洲另类伦春色综合小说 | 国产人妻久久精品二区三区老狼 | 丝袜美腿亚洲一区二区 | 香蕉久久久久久av成人 | 国产精品无码久久av | 东京热一精品无码av | av香港经典三级级 在线 | 国产人妻大战黑人第1集 | 青青青爽视频在线观看 | 亚洲中文字幕在线观看 | 中文精品无码中文字幕无码专区 | 最新国产乱人伦偷精品免费网站 | 国产精品-区区久久久狼 | 亚洲熟妇色xxxxx欧美老妇y | 鲁鲁鲁爽爽爽在线视频观看 | 国产网红无码精品视频 | 正在播放老肥熟妇露脸 | 成人av无码一区二区三区 | 日韩av无码中文无码电影 | 青春草在线视频免费观看 | 亚洲综合无码久久精品综合 | 亚洲色欲色欲天天天www | 麻豆成人精品国产免费 | 中文字幕中文有码在线 | 久久综合色之久久综合 | 无码人妻丰满熟妇区五十路百度 | 亚洲伊人久久精品影院 | 性开放的女人aaa片 | 国产suv精品一区二区五 | 大色综合色综合网站 | 亚洲毛片av日韩av无码 | 国产卡一卡二卡三 | 日韩精品乱码av一区二区 | 女人被男人躁得好爽免费视频 | 一本加勒比波多野结衣 | 樱花草在线社区www | 国产午夜福利100集发布 | 亚洲综合无码久久精品综合 | 一本无码人妻在中文字幕免费 | 欧美丰满老熟妇xxxxx性 | 亚洲精品国偷拍自产在线观看蜜桃 | 亚洲乱码中文字幕在线 | 欧美日韩久久久精品a片 | 无码午夜成人1000部免费视频 | 久久亚洲中文字幕无码 | 无码乱肉视频免费大全合集 | 国产人妻久久精品二区三区老狼 | 色欲人妻aaaaaaa无码 | 国产亚洲欧美日韩亚洲中文色 | 在线a亚洲视频播放在线观看 | 免费男性肉肉影院 | 亚洲精品综合一区二区三区在线 | 国产两女互慰高潮视频在线观看 | 亚洲国产精品久久久久久 | 久久综合久久自在自线精品自 | 又紧又大又爽精品一区二区 | 久久精品国产亚洲精品 | 久久伊人色av天堂九九小黄鸭 | 亚洲国产欧美日韩精品一区二区三区 | 日本一卡2卡3卡四卡精品网站 | 中国大陆精品视频xxxx | 色诱久久久久综合网ywww | 国产无遮挡又黄又爽免费视频 | 亚洲中文无码av永久不收费 | 亚无码乱人伦一区二区 | 亚洲国产精品一区二区美利坚 | 国产一区二区三区日韩精品 | 久久精品国产精品国产精品污 | 国产人妻大战黑人第1集 | 狂野欧美激情性xxxx | 中文字幕乱妇无码av在线 | 少妇激情av一区二区 | 色婷婷香蕉在线一区二区 | 性生交大片免费看l | 九九热爱视频精品 | 亚洲区欧美区综合区自拍区 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 日本饥渴人妻欲求不满 | 在线亚洲高清揄拍自拍一品区 | 特黄特色大片免费播放器图片 | 国产成人av免费观看 | 台湾无码一区二区 | 国产香蕉尹人视频在线 | 嫩b人妻精品一区二区三区 | 99久久久国产精品无码免费 | 天天拍夜夜添久久精品大 | 精品少妇爆乳无码av无码专区 | 日韩人妻无码中文字幕视频 | 欧美一区二区三区 | 一本加勒比波多野结衣 | 国产精品人妻一区二区三区四 | 亚洲男女内射在线播放 | 色综合视频一区二区三区 | 久久天天躁狠狠躁夜夜免费观看 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 亚洲精品一区二区三区四区五区 | 国产莉萝无码av在线播放 | 精品国产成人一区二区三区 | 夜夜影院未满十八勿进 | 日本乱人伦片中文三区 | 亚洲色无码一区二区三区 | v一区无码内射国产 | 国产成人一区二区三区别 | 天天拍夜夜添久久精品 | 性生交大片免费看女人按摩摩 | av在线亚洲欧洲日产一区二区 | 欧美日韩一区二区三区自拍 | 免费无码的av片在线观看 | 国产特级毛片aaaaaa高潮流水 | 牲欲强的熟妇农村老妇女 | 粉嫩少妇内射浓精videos | 日日麻批免费40分钟无码 | 中文精品无码中文字幕无码专区 | 国产亲子乱弄免费视频 | 熟妇人妻无乱码中文字幕 | 老熟妇乱子伦牲交视频 | 日韩精品久久久肉伦网站 | 国产乱人伦av在线无码 | 乱码av麻豆丝袜熟女系列 | 自拍偷自拍亚洲精品10p | 又大又硬又爽免费视频 | 国精产品一品二品国精品69xx | 国产精品国产自线拍免费软件 | 国产色xx群视频射精 | 亚洲日本va中文字幕 | 久久久久免费看成人影片 | 无套内谢的新婚少妇国语播放 | 国产成人无码av一区二区 | 久久亚洲精品成人无码 | 成人亚洲精品久久久久软件 | 国产亚洲欧美在线专区 | 欧美丰满熟妇xxxx性ppx人交 | 亚洲中文字幕无码中字 | 久久午夜无码鲁丝片午夜精品 | 亚洲精品一区二区三区大桥未久 | 黑人巨大精品欧美黑寡妇 | 中文字幕日韩精品一区二区三区 | 日韩精品a片一区二区三区妖精 | 老熟女重囗味hdxx69 | 亚洲男人av香蕉爽爽爽爽 | 日产精品高潮呻吟av久久 | 好爽又高潮了毛片免费下载 | 欧美zoozzooz性欧美 | 在线亚洲高清揄拍自拍一品区 | 1000部啪啪未满十八勿入下载 | 精品国产一区二区三区四区 | 亚洲a无码综合a国产av中文 | 国产三级久久久精品麻豆三级 | av无码电影一区二区三区 | 午夜福利试看120秒体验区 | 麻豆国产人妻欲求不满 | 久久人人爽人人爽人人片av高清 | 国产网红无码精品视频 | 最近免费中文字幕中文高清百度 | 日本精品人妻无码免费大全 | 亚洲中文字幕久久无码 | 国产精品无码一区二区三区不卡 | 国产人妻人伦精品1国产丝袜 | 国产一区二区三区四区五区加勒比 | av在线亚洲欧洲日产一区二区 | 97无码免费人妻超级碰碰夜夜 | 国产黑色丝袜在线播放 | 亚洲欧美日韩成人高清在线一区 | 中文字幕av日韩精品一区二区 | 中文字幕无线码免费人妻 | 中文字幕av日韩精品一区二区 | 久久熟妇人妻午夜寂寞影院 | 波多野结衣高清一区二区三区 | 欧美人与善在线com | 色欲综合久久中文字幕网 | 又粗又大又硬又长又爽 | 欧美freesex黑人又粗又大 | 丰满肥臀大屁股熟妇激情视频 | 久久亚洲中文字幕精品一区 | 亚洲人成影院在线观看 | 久久久久国色av免费观看性色 | 撕开奶罩揉吮奶头视频 | 精品亚洲成av人在线观看 | 久久人人爽人人人人片 | 亚洲熟妇色xxxxx欧美老妇y | 国产亚洲美女精品久久久2020 | 精品久久综合1区2区3区激情 | 亚洲区小说区激情区图片区 | 亚洲第一无码av无码专区 | 亚洲精品成人福利网站 | 国产性生交xxxxx无码 | 亚洲伊人久久精品影院 | 亚洲精品午夜无码电影网 | 人妻插b视频一区二区三区 | 日本欧美一区二区三区乱码 | 国产亚洲精品久久久久久大师 | 51国偷自产一区二区三区 | 亚洲熟熟妇xxxx | 老司机亚洲精品影院 | 国产女主播喷水视频在线观看 | 99在线 | 亚洲 | 伊人久久大香线蕉亚洲 | 男女超爽视频免费播放 | 国产亚洲精品久久久久久国模美 | 帮老师解开蕾丝奶罩吸乳网站 | 中文字幕无码免费久久99 | 国产真实乱对白精彩久久 | 乌克兰少妇xxxx做受 | 啦啦啦www在线观看免费视频 | 一个人免费观看的www视频 | 亚洲国产精品久久久久久 | 国产精品.xx视频.xxtv | 国产婷婷色一区二区三区在线 | 亚洲欧洲无卡二区视頻 | 中文字幕 亚洲精品 第1页 | 免费人成在线观看网站 | 久久久中文久久久无码 | 亚洲 另类 在线 欧美 制服 | 国产精品内射视频免费 | 亚洲熟妇色xxxxx欧美老妇 | 国产香蕉97碰碰久久人人 | 精品久久综合1区2区3区激情 | 久久天天躁狠狠躁夜夜免费观看 | 婷婷六月久久综合丁香 | 免费观看激色视频网站 | 中文字幕无码免费久久99 | 欧美老妇与禽交 | 欧美阿v高清资源不卡在线播放 | 黑人玩弄人妻中文在线 | 日本在线高清不卡免费播放 | 国产又粗又硬又大爽黄老大爷视 | 最新国产乱人伦偷精品免费网站 | 无套内谢的新婚少妇国语播放 | 国内老熟妇对白xxxxhd | 奇米影视7777久久精品 | 国产综合久久久久鬼色 | 亚洲精品一区二区三区大桥未久 | 中文无码成人免费视频在线观看 | 男人扒开女人内裤强吻桶进去 | 一区二区三区乱码在线 | 欧洲 | 免费人成网站视频在线观看 | 日日夜夜撸啊撸 | 亚洲中文字幕久久无码 | 奇米影视7777久久精品 | 久久精品人妻少妇一区二区三区 | 在线视频网站www色 | 国产舌乚八伦偷品w中 | 色 综合 欧美 亚洲 国产 | 女人被男人爽到呻吟的视频 | 国产av人人夜夜澡人人爽麻豆 | 久久熟妇人妻午夜寂寞影院 | 自拍偷自拍亚洲精品10p | 狠狠亚洲超碰狼人久久 | 黑森林福利视频导航 | 国产一区二区三区四区五区加勒比 | 亚洲一区二区三区香蕉 | 高清国产亚洲精品自在久久 | 国内精品人妻无码久久久影院 | 亚洲第一无码av无码专区 | 色综合久久中文娱乐网 | 精品一区二区不卡无码av | 高清不卡一区二区三区 | 少妇邻居内射在线 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国产成人精品视频ⅴa片软件竹菊 | 97久久精品无码一区二区 | 白嫩日本少妇做爰 | 日日天日日夜日日摸 | 日本熟妇浓毛 | 亚洲色成人中文字幕网站 | 亚洲欧美色中文字幕在线 | 国产一精品一av一免费 | 精品人妻中文字幕有码在线 | 无码中文字幕色专区 | 久激情内射婷内射蜜桃人妖 | 亚洲精品中文字幕久久久久 | 亚洲人成人无码网www国产 | 久久久中文久久久无码 | 亚洲人成无码网www | 精品无码国产一区二区三区av | 国产亚洲精品久久久久久 | 久在线观看福利视频 | 精品成人av一区二区三区 | 女人被男人躁得好爽免费视频 | 正在播放老肥熟妇露脸 | 国产亚洲精品久久久闺蜜 | 欧美三级a做爰在线观看 | 国产亚洲欧美日韩亚洲中文色 | 国产黄在线观看免费观看不卡 | 亚洲色在线无码国产精品不卡 | 又黄又爽又色的视频 | 日日天干夜夜狠狠爱 | 久久亚洲中文字幕精品一区 | 久久国语露脸国产精品电影 | 99精品视频在线观看免费 | 久久五月精品中文字幕 | 欧美成人家庭影院 | 一本大道伊人av久久综合 | 激情亚洲一区国产精品 | 亚洲人成影院在线无码按摩店 | 欧美35页视频在线观看 | 性生交片免费无码看人 | 久久天天躁夜夜躁狠狠 | 狠狠色色综合网站 | 国内老熟妇对白xxxxhd | 久久久久成人片免费观看蜜芽 | 日韩精品无码一区二区中文字幕 | www国产精品内射老师 | 人人爽人人澡人人人妻 | 日韩人妻系列无码专区 | 老熟妇乱子伦牲交视频 | 荫蒂添的好舒服视频囗交 | 性色欲情网站iwww九文堂 | 色欲av亚洲一区无码少妇 | 中文字幕乱码中文乱码51精品 | 欧美亚洲日韩国产人成在线播放 | 免费看少妇作爱视频 | 久久精品国产99精品亚洲 | 亚洲日本va中文字幕 | 国产av剧情md精品麻豆 | 久久久精品欧美一区二区免费 | 人人妻人人澡人人爽人人精品浪潮 | 亚洲精品成a人在线观看 | 日本护士毛茸茸高潮 | 亚洲一区二区三区含羞草 | 国产精品香蕉在线观看 | 国产国产精品人在线视 | 日日摸日日碰夜夜爽av | 99久久久国产精品无码免费 | 国产精品人人爽人人做我的可爱 | 樱花草在线播放免费中文 | 国产av久久久久精东av | 亚洲欧美日韩国产精品一区二区 | 又粗又大又硬毛片免费看 | 乱人伦中文视频在线观看 | 久久99精品国产.久久久久 | 中文精品无码中文字幕无码专区 | 欧美性黑人极品hd | 亚洲精品国产第一综合99久久 | 双乳奶水饱满少妇呻吟 | 97无码免费人妻超级碰碰夜夜 | 国产成人无码av在线影院 | 免费无码肉片在线观看 | 高潮毛片无遮挡高清免费 | 天堂亚洲免费视频 | 少妇太爽了在线观看 | 国产农村乱对白刺激视频 | 久久久久久a亚洲欧洲av冫 | 久久综合九色综合欧美狠狠 | 欧美刺激性大交 | 少女韩国电视剧在线观看完整 | 无码人妻出轨黑人中文字幕 | 精品国产麻豆免费人成网站 | 亚洲日韩中文字幕在线播放 | 疯狂三人交性欧美 | 日本一本二本三区免费 | 国产区女主播在线观看 | 午夜免费福利小电影 | 亚洲中文字幕久久无码 | 亚洲成a人片在线观看日本 | 日韩精品无码一本二本三本色 | 欧美35页视频在线观看 | 国产亚洲日韩欧美另类第八页 | 亚洲国产精品成人久久蜜臀 | 人妻有码中文字幕在线 | 国产午夜手机精彩视频 | 免费观看的无遮挡av | 国产真人无遮挡作爱免费视频 | 久久99国产综合精品 | 亚洲 欧美 激情 小说 另类 | 久久久久av无码免费网 | 亚洲第一无码av无码专区 | 一区二区三区乱码在线 | 欧洲 | 中文字幕色婷婷在线视频 | 亚洲欧美综合区丁香五月小说 | 亚洲国产精品久久久久久 | 久久综合香蕉国产蜜臀av | 九月婷婷人人澡人人添人人爽 | 98国产精品综合一区二区三区 | 性欧美疯狂xxxxbbbb | 领导边摸边吃奶边做爽在线观看 | 国产sm调教视频在线观看 | 日日天日日夜日日摸 | 日本一本二本三区免费 | 精品久久久无码中文字幕 | 亚洲欧美日韩综合久久久 | 亚洲 高清 成人 动漫 | 国产亚洲精品久久久久久国模美 | 欧洲欧美人成视频在线 | 国产片av国语在线观看 | 无码吃奶揉捏奶头高潮视频 | 对白脏话肉麻粗话av | 全黄性性激高免费视频 | 在线播放免费人成毛片乱码 | 国产精品永久免费视频 | 国内精品人妻无码久久久影院 | 秋霞成人午夜鲁丝一区二区三区 | 亚洲一区二区三区无码久久 | 性欧美videos高清精品 | 性生交片免费无码看人 | 在线欧美精品一区二区三区 | 久久国产自偷自偷免费一区调 | 成人性做爰aaa片免费看不忠 | 午夜精品久久久内射近拍高清 | 欧美性色19p | 蜜臀av无码人妻精品 | 中文字幕亚洲情99在线 | 性生交片免费无码看人 | 色综合久久久久综合一本到桃花网 | 精品亚洲成av人在线观看 | a国产一区二区免费入口 | 99视频精品全部免费免费观看 | 久久久久久国产精品无码下载 | 国产莉萝无码av在线播放 | 成人亚洲精品久久久久软件 | 成 人 免费观看网站 | 国产精品18久久久久久麻辣 | 国产精品无码mv在线观看 | 精品亚洲韩国一区二区三区 | 少妇无码一区二区二三区 | 天天av天天av天天透 | 国产av无码专区亚洲a∨毛片 | 国产精品无码永久免费888 | 亚洲精品综合一区二区三区在线 | 亚洲国产午夜精品理论片 | 国产亚洲精品久久久久久 | 亚洲欧洲中文日韩av乱码 | 理论片87福利理论电影 | 亚洲国产一区二区三区在线观看 | 国产真实夫妇视频 | 日韩精品a片一区二区三区妖精 | 亚洲伊人久久精品影院 | 亚洲经典千人经典日产 | 国内少妇偷人精品视频 | av无码不卡在线观看免费 | 成人免费视频一区二区 | 亚洲gv猛男gv无码男同 | 国产欧美熟妇另类久久久 | 亚洲人成影院在线观看 | 性色欲网站人妻丰满中文久久不卡 | 日本精品高清一区二区 | 女人被男人躁得好爽免费视频 | 乱码午夜-极国产极内射 | 国产成人精品视频ⅴa片软件竹菊 | 一本大道伊人av久久综合 | v一区无码内射国产 | 纯爱无遮挡h肉动漫在线播放 | aa片在线观看视频在线播放 | 荫蒂被男人添的好舒服爽免费视频 | 成 人影片 免费观看 | 国产亚洲欧美日韩亚洲中文色 | 女人被男人爽到呻吟的视频 | 漂亮人妻洗澡被公强 日日躁 | 久久zyz资源站无码中文动漫 | 性色欲情网站iwww九文堂 | 无码人妻久久一区二区三区不卡 | 麻豆国产人妻欲求不满 | 蜜臀av在线播放 久久综合激激的五月天 | 无码纯肉视频在线观看 | 日日摸日日碰夜夜爽av | 国产婷婷色一区二区三区在线 | 久久熟妇人妻午夜寂寞影院 | 亚洲欧洲中文日韩av乱码 | 综合激情五月综合激情五月激情1 | 精品水蜜桃久久久久久久 | 成在人线av无码免观看麻豆 | 最近免费中文字幕中文高清百度 | 亚洲成a人片在线观看无码 | 欧美亚洲日韩国产人成在线播放 | 国产精品人妻一区二区三区四 | 麻豆国产97在线 | 欧洲 | 成人亚洲精品久久久久 | 国产国产精品人在线视 | 久久亚洲日韩精品一区二区三区 | 精品国偷自产在线视频 | 俺去俺来也www色官网 | 国产午夜精品一区二区三区嫩草 | 国产极品视觉盛宴 | 色一情一乱一伦一视频免费看 | 鲁鲁鲁爽爽爽在线视频观看 | 久久亚洲精品中文字幕无男同 | 88国产精品欧美一区二区三区 | 亚洲熟悉妇女xxx妇女av | 亚洲爆乳无码专区 | 精品欧洲av无码一区二区三区 | 免费乱码人妻系列无码专区 | 国产av人人夜夜澡人人爽麻豆 | 国产色xx群视频射精 | 欧美freesex黑人又粗又大 | 又大又硬又黄的免费视频 | 久久久成人毛片无码 | 大色综合色综合网站 | 午夜肉伦伦影院 | 最新国产乱人伦偷精品免费网站 | 亚洲欧洲无卡二区视頻 | 国产精品-区区久久久狼 | 东京热男人av天堂 | 在线精品国产一区二区三区 | 在线а√天堂中文官网 | 又色又爽又黄的美女裸体网站 | 老熟妇乱子伦牲交视频 | 亚洲成a人片在线观看无码3d | 狠狠色噜噜狠狠狠狠7777米奇 | 一个人看的视频www在线 | www国产精品内射老师 | 一个人看的www免费视频在线观看 | 东京热男人av天堂 | 红桃av一区二区三区在线无码av | a在线亚洲男人的天堂 | 欧美 丝袜 自拍 制服 另类 | 天海翼激烈高潮到腰振不止 | 国产又粗又硬又大爽黄老大爷视 | 欧美一区二区三区 | 亚洲成a人片在线观看日本 | 国产一区二区三区精品视频 | 日本大乳高潮视频在线观看 | 国产 精品 自在自线 | 亚洲成a人片在线观看无码 | 国产内射爽爽大片视频社区在线 | 久久精品中文字幕一区 | 日本护士xxxxhd少妇 | 国产无av码在线观看 | 成熟人妻av无码专区 | 亚洲一区二区三区在线观看网站 | 日本一卡二卡不卡视频查询 | 国产婷婷色一区二区三区在线 | 欧美 亚洲 国产 另类 | 国产精品亚洲专区无码不卡 | 55夜色66夜色国产精品视频 | 无遮挡国产高潮视频免费观看 | 少妇一晚三次一区二区三区 | 国产疯狂伦交大片 | 亚洲国产欧美日韩精品一区二区三区 | 欧美一区二区三区视频在线观看 | 免费国产成人高清在线观看网站 | 伊人久久大香线焦av综合影院 | 久久国产精品精品国产色婷婷 | 帮老师解开蕾丝奶罩吸乳网站 | 欧美国产日产一区二区 | 久久精品人人做人人综合试看 | 风流少妇按摩来高潮 | 呦交小u女精品视频 | 永久免费观看美女裸体的网站 | 亚洲精品www久久久 | 国产电影无码午夜在线播放 | 国产亚洲欧美在线专区 | 国产综合色产在线精品 | 丰满肥臀大屁股熟妇激情视频 | 色老头在线一区二区三区 | 欧美国产日产一区二区 | 日韩在线不卡免费视频一区 | 在教室伦流澡到高潮hnp视频 | 国产成人无码专区 | aⅴ亚洲 日韩 色 图网站 播放 | 欧美性生交xxxxx久久久 | 国产色xx群视频射精 | 综合激情五月综合激情五月激情1 | 久久97精品久久久久久久不卡 | 久久视频在线观看精品 | 亚洲国产精品毛片av不卡在线 | 国产亚洲精品久久久久久 | 日日碰狠狠躁久久躁蜜桃 | 亚洲第一无码av无码专区 | 狠狠色欧美亚洲狠狠色www | 成人欧美一区二区三区黑人 | 日韩在线不卡免费视频一区 | 欧美日韩一区二区综合 | 亚洲精品国产品国语在线观看 | 伊人久久大香线焦av综合影院 | 亚洲国产综合无码一区 | 国产两女互慰高潮视频在线观看 | 秋霞成人午夜鲁丝一区二区三区 | 西西人体www44rt大胆高清 | 亚洲综合无码一区二区三区 | 久青草影院在线观看国产 | 亚洲人成网站色7799 | 内射后入在线观看一区 | 香蕉久久久久久av成人 | 无码人妻精品一区二区三区下载 | √天堂资源地址中文在线 | 亚洲精品国产a久久久久久 | 日本熟妇人妻xxxxx人hd | 中文字幕人妻无码一夲道 | 午夜性刺激在线视频免费 | 国产精品理论片在线观看 | 国产97色在线 | 免 | 亚洲国产成人a精品不卡在线 | 一区二区三区乱码在线 | 欧洲 | 精品一二三区久久aaa片 | 曰本女人与公拘交酡免费视频 | 精品少妇爆乳无码av无码专区 | 国产色在线 | 国产 | 成人精品视频一区二区三区尤物 | 久久精品丝袜高跟鞋 | 综合网日日天干夜夜久久 | 高中生自慰www网站 | 精品人妻人人做人人爽夜夜爽 | 亚洲欧美精品aaaaaa片 | 曰本女人与公拘交酡免费视频 | 久久精品视频在线看15 | 亚洲精品鲁一鲁一区二区三区 | 亚洲熟悉妇女xxx妇女av | 久久久中文久久久无码 | 亚洲国精产品一二二线 | 国产激情无码一区二区app | 2019nv天堂香蕉在线观看 | 波多野结衣乳巨码无在线观看 | 精品久久久久久人妻无码中文字幕 | 国产一区二区三区精品视频 | 欧美三级不卡在线观看 | 国产成人午夜福利在线播放 | 亚洲精品一区二区三区在线 | 一本一道久久综合久久 | 欧美自拍另类欧美综合图片区 | 久久精品人人做人人综合试看 | 久精品国产欧美亚洲色aⅴ大片 | 丰满肥臀大屁股熟妇激情视频 | 日日摸天天摸爽爽狠狠97 | 亚洲国产精华液网站w | 久久久久免费精品国产 | 在线精品亚洲一区二区 | 少妇性荡欲午夜性开放视频剧场 | 午夜成人1000部免费视频 | 日韩少妇内射免费播放 | 国产欧美精品一区二区三区 | 亚洲男女内射在线播放 | 国产精品亚洲а∨无码播放麻豆 | 亚洲а∨天堂久久精品2021 | 日本精品久久久久中文字幕 | 中文字幕无码免费久久99 | 亚洲国产精品美女久久久久 | 成 人 免费观看网站 | 99精品视频在线观看免费 | 3d动漫精品啪啪一区二区中 | 国产香蕉97碰碰久久人人 | 性欧美大战久久久久久久 | 亚洲国产成人a精品不卡在线 | 亚洲一区二区三区 | 婷婷丁香五月天综合东京热 | 国产97色在线 | 免 | 国内少妇偷人精品视频免费 | 欧美午夜特黄aaaaaa片 | 亚洲热妇无码av在线播放 | 精品国产av色一区二区深夜久久 | 国产亚洲日韩欧美另类第八页 | 国产熟妇高潮叫床视频播放 | 日韩亚洲欧美精品综合 | 美女扒开屁股让男人桶 | 午夜福利试看120秒体验区 | 亚洲国产av精品一区二区蜜芽 | 国产在线精品一区二区三区直播 | 捆绑白丝粉色jk震动捧喷白浆 | 国产激情艳情在线看视频 | 亚洲国产精品无码久久久久高潮 | 亚洲中文字幕无码中文字在线 | 精品无码国产自产拍在线观看蜜 | 亚洲の无码国产の无码步美 | 97久久国产亚洲精品超碰热 | 欧洲熟妇精品视频 | 国产麻豆精品精东影业av网站 | 国内少妇偷人精品视频 | 亚洲成av人综合在线观看 | 搡女人真爽免费视频大全 | 国产麻豆精品精东影业av网站 | 国产口爆吞精在线视频 | 精品久久久中文字幕人妻 | 午夜福利电影 | 成人欧美一区二区三区 | 久久精品人人做人人综合 | 奇米影视888欧美在线观看 | 伊人久久大香线焦av综合影院 | 日韩精品乱码av一区二区 | www国产亚洲精品久久久日本 | 天天燥日日燥 | 午夜肉伦伦影院 | 骚片av蜜桃精品一区 | 国产美女精品一区二区三区 | 极品嫩模高潮叫床 | 久久久久久久久蜜桃 | 亚洲无人区午夜福利码高清完整版 | 极品嫩模高潮叫床 | 97久久精品无码一区二区 | 性色欲网站人妻丰满中文久久不卡 | 久久99精品国产麻豆 | 美女极度色诱视频国产 | 欧美老妇交乱视频在线观看 | 亚洲人成影院在线无码按摩店 | 亚洲一区二区三区在线观看网站 | 久久亚洲中文字幕精品一区 | 自拍偷自拍亚洲精品10p | av人摸人人人澡人人超碰下载 | 欧美日韩人成综合在线播放 | 天堂久久天堂av色综合 | 又大又硬又黄的免费视频 | 国产亚洲日韩欧美另类第八页 | 麻豆精产国品 | 成人无码影片精品久久久 | 国产97人人超碰caoprom | 高潮喷水的毛片 | 亚洲成av人片在线观看无码不卡 | 欧美 日韩 人妻 高清 中文 | 真人与拘做受免费视频一 | 娇妻被黑人粗大高潮白浆 | 中文字幕中文有码在线 | 俄罗斯老熟妇色xxxx | 中国女人内谢69xxxx | 无套内谢老熟女 | 国内精品人妻无码久久久影院 | 国产成人精品久久亚洲高清不卡 | 亚洲自偷精品视频自拍 | 国产卡一卡二卡三 | 大胆欧美熟妇xx | 色综合久久久无码网中文 | 国产精品久久久久久无码 | 无码人妻精品一区二区三区下载 | 精品久久久久香蕉网 | 男女爱爱好爽视频免费看 | 国产麻豆精品精东影业av网站 | 国产亚洲日韩欧美另类第八页 | 欧美一区二区三区视频在线观看 | 亚洲欧美国产精品久久 | 国语精品一区二区三区 | 免费男性肉肉影院 | 丝袜美腿亚洲一区二区 | 免费无码的av片在线观看 | 亚洲小说春色综合另类 | 无码人妻精品一区二区三区下载 | 精品久久久无码人妻字幂 | 1000部夫妻午夜免费 | 成人欧美一区二区三区 | 久久人人97超碰a片精品 | 97精品人妻一区二区三区香蕉 | 欧美成人家庭影院 | 在线播放无码字幕亚洲 | 强辱丰满人妻hd中文字幕 | 无人区乱码一区二区三区 | 亚洲一区二区三区四区 | 亚洲国产欧美国产综合一区 | 国产色视频一区二区三区 | 国产在线精品一区二区三区直播 | 亚洲综合在线一区二区三区 | 日本在线高清不卡免费播放 | 又大又黄又粗又爽的免费视频 | 日韩欧美中文字幕在线三区 | 日日摸天天摸爽爽狠狠97 | 国产舌乚八伦偷品w中 | 免费人成在线观看网站 | 无码福利日韩神码福利片 | 日本丰满熟妇videos | 在线а√天堂中文官网 | 亚洲一区二区观看播放 | 永久黄网站色视频免费直播 | 露脸叫床粗话东北少妇 | 久久久久99精品国产片 | 国产成人精品视频ⅴa片软件竹菊 | 国产精品美女久久久网av | 国产精品亚洲lv粉色 | 欧美zoozzooz性欧美 | 丰满人妻一区二区三区免费视频 | 精品乱码久久久久久久 | 亚洲 激情 小说 另类 欧美 | 亚洲日本一区二区三区在线 | 亚洲の无码国产の无码步美 | 亚洲国产精品久久久久久 | 美女黄网站人色视频免费国产 | 1000部啪啪未满十八勿入下载 | 色综合久久久久综合一本到桃花网 | 欧美性猛交xxxx富婆 | 99久久精品国产一区二区蜜芽 | 99久久99久久免费精品蜜桃 | av人摸人人人澡人人超碰下载 | 免费乱码人妻系列无码专区 | 久久国语露脸国产精品电影 | 亚洲色欲色欲天天天www | 欧美激情一区二区三区成人 | 亚洲а∨天堂久久精品2021 | 国产精品无套呻吟在线 | 中文字幕精品av一区二区五区 | 日本精品久久久久中文字幕 | 激情综合激情五月俺也去 | 精品人妻中文字幕有码在线 | 国产乱码精品一品二品 | 色综合久久久无码中文字幕 | 麻豆国产人妻欲求不满谁演的 |