观看麻豆影视文化有限公司-国产 高清 在线-国产 日韩 欧美 亚洲-国产 日韩 欧美 综合-日日夜夜免费精品视频-日日夜夜噜

網絡流量控制(網絡流量監控工具)

  • 生活
  • 2023-04-25 14:40

TCP流量遏制重要由鑒于接受方確認的滑行窗口體制和鑒于搜集情景的發送方的堵塞遏制算法來實行!

TCPTrafficControl

TCP流量遏制重要波及滑行窗口,堵塞遏制算法,RTT(Round-TripTime,往復功夫),RTO(Retran***issionTimeout,重傳超時)計劃之類。

滑行窗口常常覺得是接受方反應給發送方的流量和重傳遏制(不商量搜集);堵塞遏制算法常常覺得是發送方的流量遏制算法(商量搜集時延丟包等);RTT計劃會感化到RTO計劃及感化某些堵塞算法運轉截止;RTO計劃會波及到超時重傳準時器樹立。滑行窗口

滑行窗口(slidingwindow)是數據傳輸時接受方公布窗口給發送方,而后發送方按照窗口確定一次發送多少量據的體制,實質是ARQ(AutomaticRepeatRequest,停等和議),滑行窗口一上面運用接受方確認報文反應的窗口巨細遏制歷次簽發承包合約個數,另一上面按照接受方確認報文確認號確定數據幀重傳,滑行窗口僅經過接受方反應的消息舉行流量遏制,不會商量搜集帶寬推遲等成分。

ARQ重要有貫串ARQGo-Back-N和采用ARQSelectiveRepeat兩種,TCP中運用Go-back-N,SelectiveRepeat動作可選實行。Go-back-N和SelectiveRepeat辨別在乎,Go-back-N一次簽發承包合約惟有一個準時器,中央展示丟包,則丟的包之后的一切包都須要重傳,SelectiveRepeat一次簽發承包合約須要和包個數一律的準時器數目,中央展示丟包則僅重傳喪失的誰人包,大略來說Go-back-N比擬耗搜集帶寬,SelectiveRepeat比擬耗計劃資源。

兩種ARQ滑行窗口發送進程可參考如次網站的動畫:https://www2.tkn.tu-berlin.de/teaching/rn/animations/gbn_sr/

TCP滑效果制道理可簡述為:TCP發送方包括一個發送窗口,按序列號發送數據包,TCP接受方按照收到的包恢復確認包,TCP發送包按照收到簡直認包中公布窗口反應來動靜安排發送窗口巨細、滑行窗口右移并發送后續的數據包。

如次tcpipguide網站TCP滑行窗口刻畫,TCP發送方發送緩存辨別為4塊地區:已發送已確認、已發送未確認、未發送接受方已籌備好和未發送接受方未籌備好,TCP接受方接受緩存辨別為3塊地區:已接受已確認、未接受被承諾發送、未收到爆發方大概未發送。

Linux內核4.x中滑行窗口代碼示例,大概不妨看出來和tcpipguid網站中刻畫普遍:

/*Updateoursendwindow.**Windowupdatealgorithm,describedinRFC793/RFC1122(usedinlinux-2.2*andinFreeBSD.NetBSD'soneisevenworse.)iswrong.*/staticinttcp_ack_update_window(structsock*sk,conststructsk_buff*skb,u32ack,u32ack_seq){structtcp_sock*tp=tcp_sk(sk);intflag=0;u32nwin=ntohs(tcp_hdr(skb)->window);if(likely(!tcp_hdr(skb)->syn))nwin<<=tp->rx_opt.snd_wscale;if(tcp_may_update_window(tp,ack,ack_seq,nwin)){flag|=FLAG_WIN_UPDATE;tcp_update_wl(tp,ack_seq);if(tp->snd_wnd!=nwin){tp->snd_wnd=nwin;/*Note,itistheonlyplace,where*fastpathisrecoveredforsendingTCP.*/tp->pred_flags=0;tcp_fast_path_check(sk);if(!tcp_write_queue_empty(sk))tcp_slow_start_after_idle_check(sk);if(nwin>tp->max_window){tp->max_window=nwin;tcp_sync_mss(sk,inet_csk(sk)->icsk_pmtu_cookie);}}}tcp_snd_una_update(tp,ack);returnflag;}RTT&RTO計劃

TCP流量遏制中RTT及RTO計劃是一個很要害的題目,ARQ中對準丟包都須要超時重傳,超時的樹立就會波及到RTO,RTO樹立過短(<2RTT)則大概引導不需要的重傳(丟的包大概在傳輸趕快能到),超時重傳功夫樹立過長則大概感化TCP通訊功效(從來在等丟的包重傳過來),RTO計劃須要鑒于RTT,RTT計劃值徑直感化RTO,不少堵塞算法也和RTT徑直關系,TCP流端到端的RTT和RTO都不是一個恒定的值,都是一段功夫搜集中端到端的預算值,跟著功夫和搜集的變革而變革。

搜集就像高速鐵路網,時而擁擠時而流利無阻,對應在搜集里即是RTT顫動,怎樣計劃RTT和RTO徑直感化重傳從而感化通訊功效,其計劃也過程長功夫的表面和試驗進程。

首先PhilKarn和CraigPartridge提出SRTT(SmoothedRTT,預算重傳功夫)和RTO計劃如次:

SRTT=(α*SRTT)+((1-α)*RTT)RTO=min[UBOUND,max[LBOUND,(β*SRTT)]]個中α取0.8~0.9,β取1.3~2.0,UBOUND和LBOUND辨別為下限功夫和下限功夫厥后Jacobson和Karels做了確定的矯正,最后產生RFC6298https://datatracker.ietf.org/doc/html/rfc6298,SRTT,DevRTT(RTT缺點),RTO計劃公式,簡直如次:

SRTT=SRTT+α*(RTT-SRTT)DevRTT=(1-β)*DevRTT+β*(|RTT-SRTT|)RTO=μ*SRTT+δ*DevRTT個中α取0.125,β取0.25,μ取1,δ取4Linux內核4.x中SRTT計劃代碼如次:

/*Calledtocomputea***oothedrttestimate.Thedatafedtothis*routineeithercomesfromtimestamps,orfromsegmentsthatwere*known_not_tohavebeenretran***itted[seeKarn/Partridge*ProceedingsSIGCOMM87].ThealgorithmisfromtheSIGCOMM88*piecebyVanJacobson.*NOTE:thenextthreeroutinesusedtobeonebigroutine.*TosavecyclesintheRFC1323implementationitwasbettertobreak*itupintothreeprocedures.--erics*/staticvoidtcp_rtt_estimator(structsock*sk,longmrtt_us){structtcp_sock*tp=tcp_sk(sk);longm=mrtt_us;/*RTT*/u32srtt=tp->srtt_us;/*ThefollowingamusingcodecomesfromJacobson's*articleinSIGCOMM'88.Notethatrttandmdev*arescaledversionsofrttandmeandeviation.*Thisisdesignedtobeasfastaspossible*mstandsfor"measurement".**Ona1990paperthertovalueischangedto:*RTO=rtt+4*mdev**Funny.Thisalgorithmseemstobeverybroken.*TheseformulaeincreaseRTO,whenitshouldbedecreased,increase*tooslowly,whenitshouldbeincreasedquickly,decreasetooquickly*etc.IguessinBSDRTOtakesONEvalue,sothatitisabsolutely*doesnotmatterhowto_calculate_it.Seems,itwastrap*thatVJfailedtoavoid.8)*/if(srtt!=0){m-=(srtt>>3);/*misnowerrorinrttest*/srtt+=m;/*rtt=7/8rtt+1/8new*/if(m<0){m=-m;/*misnowabs(error)*/m-=(tp->mdev_us>>2);/*similarupdateonmdev*//*ThisissimilartooneofEifelfindings.*Eifelblocksmdevupdateswhenrttdecreases.*Thissolutionisabitdifferent:weusefinergain*formdevinthiscase(alpha*beta).*LikeEifelitalsopreventsgrowthofrto,*butalsoitlimitstoofastrtodecreases,*happeninginpureEifel.*/if(m>0)m>>=3;}else{m-=(tp->mdev_us>>2);/*similarupdateonmdev*/}tp->mdev_us+=m;/*mdev=3/4mdev+1/4new*/if(tp->mdev_us>tp->mdev_max_us){tp->mdev_max_us=tp->mdev_us;if(tp->mdev_max_us>tp->rttvar_us)tp->rttvar_us=tp->mdev_max_us;}if(after(tp->snd_una,tp->rtt_seq)){if(tp->mdev_max_us<tp->rttvar_us)tp->rttvar_us-=(tp->rttvar_us-tp->mdev_max_us)>>2;tp->rtt_seq=tp->snd_nxt;tp->mdev_max_us=tcp_rto_min_us(sk);}}else{/*nopreviousmeasure.*/srtt=m<<3;/*takethemeasuredtimetobertt*/tp->mdev_us=m<<1;/*makesurerto=3*rtt*/tp->rttvar_us=max(tp->mdev_us,tcp_rto_min_us(sk));tp->mdev_max_us=tp->rttvar_us;tp->rtt_seq=tp->snd_nxt;}tp->srtt_us=max(1U,srtt);}Linux內核4.x中RTO計劃代碼:

/*Calculatertowithoutbackoff.ThisisthesecondhalfofVanJacobson's*routinereferredtoabove.*/voidtcp_set_rto(structsock*sk){conststructtcp_sock*tp=tcp_sk(sk);/*Oldcrapisreplacedwithnewone.8)**Moreseriously:*1.Ifrttvariancehappenedtobeless50msec,itishallucination.*ItcannotbelessduetoutterlyerraticACKgenerationmade*atleastbysolarisandfreebsd."ErraticACKs"has_nothing_*todowithdelayedacks,becauseatcwnd>2truedelacktimeout*isinvisible.Actually,Linux-2.4alsogenerateserratic*ACKsinsomecircumstances.*/inet_csk(sk)->icsk_rto=__tcp_set_rto(tp);/*2.Fixupsmadeearliercannotberight.*IfwedonotestimateRTOcorrectlywithoutthem,*allthealgoispureshitandshouldbereplaced*withcorrectone.Itisexactly,whichwepretendtodo.*//*NOTE:clampingatTCP_RTO_MINisnotrequired,currentalgo*guaranteesthatrtoishigher.*/tcp_bound_rto(sk);}staticinlineu32__tcp_set_rto(conststructtcp_sock*tp){returnusecs_to_jiffies((tp->srtt_us>>3)+tp->rttvar_us);}堵塞遏制算法

因為滑行窗口僅商量接受方的接受本領不商量搜集成分,搜集帶寬是共享的,搜集延時是顫動的,搜集的變革帶來的題目必然會形成所有體例的解體,這就像兩個列車站輸送貨色,僅商量列車站的包含量,不商量列車軌跡的裝載本領,列車車次發的再多大概也是堵在軌跡上,還大概引導軌跡體例瘋癱。

堵塞遏制算法是發送方按照暫時搜集情景安排簽發承包合約速度的流量遏制體制,TCP中堵塞遏制算法興盛于今,從典范的reno到google連年來提出的bbr,功夫連接有新的堵塞遏制算法提出來,堵塞遏制也產生了如次RFC。RFC5681https://datatracker.ietf.org/doc/html/rfc5681以linux內核為例,最新的內核本子里面實行了十多種堵塞遏制算法實行,囊括少許比擬新的算法實行(比方bbr),linux較早本子內核運用reno,linux2.6.8此后默許沿用bic算法,linux2.6.19此后又默許運用了cubic算法,暫時linux5.x仍舊默許運用cubic算法,windows同樣也是扶助多種堵塞遏制算法的,暫時windows11默許也是運用cubic算法。

堵塞算法道理(reno為例)

TCP堵塞算法完全框架基礎普遍,以典范的TCPreno堵塞遏制算法(教科書常常講的本子)舉行扼要引見,TCP堵塞遏制RFC5681規建都包括慢啟用、堵塞制止、快重傳、快回復階段,這又波及到幾個基礎參數(cwnd、ssthresh),cwnd指堵塞窗口的巨細,確定了一次發送多少量據包,ssthresh指慢啟用閾值。

慢啟用慢啟用階段分為兩種,一種是流剛發端cwnd<ssthresh時cwnd初始為1MSS(跟著硬件革新,Linux最新內核初始為10MSS)并跟著RTT呈指數延長,一種是重傳超時cwnd回復初始值從新加入慢啟用,慢啟用并不表白發送速度延長慢(指數級延長),部分領會是指從比擬低的開始速度來摸索搜集本領,對準慢啟用有提出了ABC(AppropriateByteCount)算法對慢啟用爆發而形成勝過搜集裝載本領舉行建設,如次兩篇對于ABC的RFC。RFC3465https://datatracker.ietf.org/doc/html/rfc3465RFC3742https://datatracker.ietf.org/doc/html/rfc3742初次慢啟用首先初始ssthresh都是樹立為一個很大的值,如許直到丟包才會加入堵塞制止,后又展示了hystart優化(攙和慢啟用),比方猜測出理念的ssthresh,進而讓初次慢啟用不至于丟包才加入堵塞制止(丟包價格太大)。

堵塞制止當cwnd>=ssthresh時會加入堵塞制止階段,cwnd會跟著RTT呈線性延長,這個開始是比擬頑固地摸索最大搜集本領,不至于搜集解體。

快重傳堵塞制止階段當收到3個貫串ACK,表白大概展示了丟包,表白搜集展示微弱擁擠,這個功夫會加入快重傳階段,ssthresh會樹立為0.5*cwnd,cwnd會樹立為ssthresh+3MSS,舉行數據包重傳加入快回復階段。

快回復快回復階段即使重傳數據包后即使仍舊收不到新數據包ACK并且RTO超時了,表白搜集并沒有回復,就會從新加入慢啟用階段,ssthresh會樹立為0.5*cwnd,cwnd會樹立為初始值,即使收到了新數據的ACK包,表白搜集已回復,cwnd會樹立為ssthresh,加入堵塞制止階段。

reno堵塞遏制算法狀況圖如次

reno算法iperf打擊流氓犯罪wireshark抓包io圖如次:

堵塞算法比較

堵塞遏制算法主假如鑒于搜集丟包和推遲(RTT)來實行,以是有的算法丟包敏銳,有的算法推遲敏銳,有的貫串丟包和推遲,各別的算法重要的辨別大概在乎堵塞制止階段怎樣去擬合理念發送速度弧線又不至于丟包,如次https://en.***.org/wiki/TCP_congestion_control對于各別堵塞算法比較。

堵塞算法搜集反應須要竄改點運用場景公道性規則(New)RenoLoss——DelayVegasDelaySenderLesslossProportionalHighSpeedLossSenderHighbandwidthBICLossSenderHighbandwidthCUBICLossSenderHighbandwidthC2TCP[10][11]Loss/DelaySenderUltra-lowlatencyandhighbandwidthNATCP[12]Multi-bitsignalSenderNearOptimalPerformanceElastic-TCPLoss/DelaySenderHighbandwidth/short&long-distanceAgile-TCPLossSenderHighbandwidth/short-distanceH-TCPLossSenderHighbandwidthFASTDelaySenderHighbandwidthProportionalCompoundTCPLoss/DelaySenderHighbandwidthProportionalWestwoodLoss/DelaySenderLJerseyLoss/DelaySenderLBBR[13]DelaySenderBLVC,BufferbloatCLAMPMulti-bitsignalReceiver,RouterVMax-minTFRCLossSender,ReceiverNoRetran***issionMinimumdelayXCPMulti-bitsignalSender,Receiver,RouterBLFCMax-minVCP2-bitsignalSender,Receiver,RouterBLFProportionalMaxNetMulti-bitsignalSender,Receiver,RouterBLFSCMax-minJetMaxMulti-bitsignalSender,Receiver,RouterHighbandwidthMax-minREDLossRouterReduceddelayECNSingle-bitsignalSender,Receiver,RouterReducedloss這邊還要提一下TCP流的公道性題目,有的堵塞算法大概會生存帶寬搶占,鑒于延時關系的算法就很簡單展示,由于是鑒于RTT來搶占帶寬,RTT越小占用則更多,比方有兩條TCP流,TCP流中推遲更小的會搶占更多的帶寬,以至實足占領一切帶寬,其余流都沒轍平常處事。比方reno和bic都生存搶占題目,cubic是經過3次弧線來探測理念帶寬,和RTT無關系,公道性做得較好。

如上海圖書館運用reno算法,運用iperf打擊流氓犯罪到兩個各別效勞端,stream2延時低徑直搶占了大局部帶寬

如上海圖書館運用cubic算法,同樣運用iperf打擊流氓犯罪到兩個各別效勞端,steam2延時低搶占帶寬則沒有那么重要

Linux內核中堵塞算法

Linux2.6.x內核本子簡直可參考https://linuxgazette.net/135/pfeiffer.html舉行堵塞算法采用,最新的linux5.x內核多扶助了幾種,內核代碼Kconfig中也有扼要刻畫,特地提一下mptcp內核也包括了多路途場景的幾種堵塞算法。

Linux4.x內核中扶助的tcp堵塞算法,默許運用cubic:

configDEFAULT_TCP_CONGstringdefault"bic"ifDEFAULT_BICdefault"cubic"ifDEFAULT_CUBICdefault"htcp"ifDEFAULT_HTCPdefault"hybla"ifDEFAULT_HYBLAdefault"vegas"ifDEFAULT_VEGASdefault"westwood"ifDEFAULT_WESTWOODdefault"veno"ifDEFAULT_VENOdefault"reno"ifDEFAULT_RENOdefault"dctcp"ifDEFAULT_DCTCPdefault"cdg"ifDEFAULT_CDGdefault"bbr"ifDEFAULT_BBRdefault"cubic"Linuxmptcpv0.95內核扶助的mptcp堵塞算法:

configTCP_CONG_LIAtristate"MPTCPLinkedIncrease"dependsonMPTCPdefaultn---help---MultiPathTCPLinkedIncreaseCongestionControlToenableit,justput'lia'intcp_congestion_controlconfigTCP_CONG_OLIAtristate"MPTCPOpportunisticLinkedIncrease"dependsonMPTCPdefaultn---help---MultiPathTCPOpportunisticLinkedIncreaseCongestionControlToenableit,justput'olia'intcp_congestion_controlconfigTCP_CONG_WVEGAStristate"MPTCPWVEGASCONGESTIONCONTROL"dependsonMPTCPdefaultn---help---wVegascongestioncontrolforMPTCPToenableit,justput'wvegas'intcp_congestion_controlconfigTCP_CONG_BALIAtristate"MPTCPBALIACONGESTIONCONTROL"dependsonMPTCPdefaultn---help---MultipathTCPBalancedLinkedAdaptationCongestionControlToenableit,justput'balia'intcp_congestion_controlconfigTCP_CONG_MCTCPDESYNCtristate"DESYNCHRONIZEDMCTCPCONGESTIONCONTROL(EXPERIMENTAL)"dependsonMPTCPdefaultn---help---DesynchronizedMultiChannelTCPCongestionControl.Thisisexperimentalcodethatonlysupportssinglepathandmusthavesetmptcp_ndiffportslargerthanone.Toenableit,justput'mctcpdesync'intcp_congestion_controlForfurtherdetailssee:http://ieeexplore.ieee.org/abstract/document/6911722/https://doi.org/10.1016/j.comcom.2015.07.010Linux4.x內核中堵塞算法擴充時參考struct,堵塞算法重要重寫內里因變量來實行:

structtcp_congestion_ops{structlist_headlist;u32key;u32flags;/*initializeprivatedata(optional)*/void(*init)(structsock*sk);/*cleanupprivatedata(optional)*/void(*release)(structsock*sk);/*returnslowstartthreshold(required)*/u32(*ssthresh)(structsock*sk);/*donewcwndcalculation(required)*/void(*cong_avoid)(structsock*sk,u32ack,u32acked);/*callbeforechangingca_state(optional)*/void(*set_state)(structsock*sk,u8new_state);/*callwhencwndeventoccurs(optional)*/void(*cwnd_event)(structsock*sk,enumtcp_ca_eventev);/*callwhenackarrives(optional)*/void(*in_ack_event)(structsock*sk,u32flags);/*newvalueofcwndafterloss(required)*/u32(*undo_cwnd)(structsock*sk);/*hookforpacketackaccounting(optional)*/void(*pkts_acked)(structsock*sk,conststructack_sample*sample);/*overridesysctl_tcp_min_tso_segs*/u32(*min_tso_segs)(structsock*sk);/*returnsthemultiplierusedintcp_sndbuf_expand(optional)*/u32(*sndbuf_expand)(structsock*sk);/*callwhenpacketsaredeliveredtoupdatecwndandpacingrate,*afteralltheca_stateprocessing.(optional)*/void(*cong_control)(structsock*sk,conststructrate_sample*rs);/*getinfoforinet_diag(optional)*/size_t(*get_info)(structsock*sk,u32ext,int*attr,uniontcp_cc_info*info);charname[TCP_CA_NAME_MAX];structmodule*owner;};Linux4.x內核cubic算法從新如次因變量來實行:

staticstructtcp_congestion_opscubictcp__read_mostly={.init=bictcp_init,.ssthresh=bictcp_recalc_ssthresh,.cong_avoid=bictcp_cong_avoid,.set_state=bictcp_state,.undo_cwnd=tcp_reno_undo_cwnd,.cwnd_event=bictcp_cwnd_event,.pkts_acked=bictcp_acked,.owner=THIS_MODULE,.name="cubic",};Linux體例流量遏制要害體例參數

#每個套接字所承諾的最大緩沖區的巨細net.core.optmem_max=20480#接受套接字緩沖區巨細的缺省值(以字節為單元)。net.core.rmem_default=229376#接受套接字緩沖區巨細的最大值(以字節為單元)。net.core.rmem_max=16777216#socket監聽的backlog(監聽部隊)下限net.core.somaxconn=128#tcp默許堵塞算法net.ipv4.tcp_congestion_control=cubic#能否打開tcp窗口夸大net.ipv4.tcp_window_scaling=1#tcp外存巨細區(以頁為單元,1頁=4096字節),3個數值辨別為low,pressure,high#low:tcp運用低于該值頁數時不商量開釋外存,pressure:tcp運用外存大于該值則試圖寧靜其運用外存low以次#high:承諾tcp用列隊緩存數據報文的頁面量,勝過該值中斷調配socket,展示TCP:toomanyoforphanedsocketsnet.ipv4.tcp_mem=381705508942763410#tcp讀緩存區(以字節為單元),3個數值辨別為默許值最小值最大值net.ipv4.tcp_rmem=102408738016777216#tcp寫緩存區(以字節為單元),3個數值辨別為默許值最小值最大值net.ipv4.tcp_wmem=102408738016777216Reference

https://tools.ietf.org/html/std7https://datatracker.ietf.org/doc/html/rfc1122https://datatracker.ietf.org/doc/html/rfc1323https://datatracker.ietf.org/doc/html/rfc1379https://datatracker.ietf.org/doc/html/rfc1948https://datatracker.ietf.org/doc/html/rfc2018https://datatracker.ietf.org/doc/html/rfc5681https://datatracker.ietf.org/doc/html/rfc6247https://datatracker.ietf.org/doc/html/rfc6298https://datatracker.ietf.org/doc/html/rfc6824https://datatracker.ietf.org/doc/html/rfc7323https://datatracker.ietf.org/doc/html/rfc7414https://en.***.org/wiki/Tran***ission_Control_Protocolhttps://linuxgazette.net/135/pfeiffer.htmlhttp://www.tcpipguide.com/free/t_TCPSlidingWindowDataTransferandAcknowledgementMech.htmhttps://www2.tkn.tu-berlin.de/teaching/rn/animations/gbn_sr/https://zhuanlan.zhihu.com/p/144273871http://lxr.linux.no/linux+v3.2.8/Documentation/networking/ip-sysctl.txt#L464

猜你喜歡

主站蜘蛛池模板: 久久影院yy6080 | 人人公开免费超级碰碰碰视频 | 国产香港特级一级毛片 | 步兵一区二区三区在线观看 | 欧美综合一区二区三区 | 欧美理论片在线观看一区二区 | 性欧美欧美之巨大69 | se94se欧美综合色 | 亚洲欧美日韩色 | 99精品视频一区在线视频免费观看 | 亚洲午夜色 | 久草在线手机 | 国产欧美一级片 | 国产精品成人一区二区三区 | 永久在线| 亚洲天堂精品在线观看 | 欧美成人观看免费完全 | 亚洲视频一 | 9丨精品国产高清自在线看 ⅹxx中国xxx人妖 | 午夜欧美日韩在线视频播放 | 男人精品一线视频在线观看 | 国产一在线精品一区在线观看 | 国产一级毛片大陆 | 久草网站在线 | 国产一级一片免费播放视频 | 香蕉视频911 | 精品400部自拍视频在线播放 | 欧美不卡一区 | 欧美精选欧美极品 | 亚洲男人的天堂网 | 97国产精品| 成人怡红院 | 日韩三级免费看 | 涩涩网站| 亚洲美女在线观看播放 | 国产精品所毛片视频 | 免费观看a级网站 | 德国女人一级毛片免费 | 一级特级毛片 | 女人张开腿让男人添 | 成人午夜影院在线观看 |