欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

如何理解vxlan在openstack中的使用場景-創(chuàng)新互聯(lián)

這篇文章給大家介紹如何理解vxlan在openstack中的使用場景,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新互聯(lián)建站,專注為中小企業(yè)提供官網(wǎng)建設(shè)、營銷型網(wǎng)站制作、成都響應(yīng)式網(wǎng)站建設(shè)、展示型成都做網(wǎng)站、網(wǎng)站設(shè)計、外貿(mào)營銷網(wǎng)站建設(shè)等服務(wù),幫助中小企業(yè)通過網(wǎng)站體現(xiàn)價值、有效益。幫助企業(yè)快速建站、解決網(wǎng)站建設(shè)與網(wǎng)站營銷推廣問題。

一、前言

介紹前,首先講一下網(wǎng)絡(luò)中underlay和overlay的概念。underlay指的是物理網(wǎng)絡(luò)層,overlay是指在物理網(wǎng)絡(luò)層之上的邏輯網(wǎng)絡(luò)或者又稱為虛擬網(wǎng)絡(luò)。overlay是建立在underlay的基礎(chǔ)上,需要物理網(wǎng)絡(luò)中的設(shè)備兩兩互聯(lián),overlay的出現(xiàn)突破了underlay的物理局限性,使得網(wǎng)絡(luò)的架構(gòu)更為靈活。以vlan為例,在underlay環(huán)境下不同網(wǎng)絡(luò)的設(shè)備需要連接至不同的交換機下,如果要改變設(shè)備所屬的網(wǎng)絡(luò),則要調(diào)整設(shè)備的連線。引入vlan后,調(diào)整設(shè)備所屬網(wǎng)絡(luò)只需要將設(shè)備加入目標(biāo)vlan下,避免了設(shè)備的連線調(diào)整。

二、云環(huán)境下vlan的痛點

  • vlan id數(shù)量不足  
    vlan header由12bit組成,理論上限為4096個,可用vlan數(shù)量為1~4094個,無法滿足云環(huán)境下的需求。

  • vm熱遷移  
    云計算場景下,傳統(tǒng)服務(wù)器變成一個個運行在宿主機上的vm。vm是運行在宿主機的內(nèi)存中,所以可以在不中斷的情況下從宿主機A遷移到宿主機B,前提是遷移前后vm的ip和mac地址不能發(fā)生變化,這就要求vm處在一個二層網(wǎng)絡(luò)。畢竟在三層環(huán)境下,不同vlan使用不同的ip段,否則路由器就犯難了。

  • mac表項有限  
    普通的交換機mac表項有4k或8k等,在小規(guī)模場景下不會成為瓶頸,云計算環(huán)境下每臺物理服務(wù)器上運行多臺vm,每個vm有可能有多張vnic,mac地址會成倍增長,交換機的表項限制則成為必須面對的問題。

    三、針對痛點vxlan的解決方法

  • 以多取勝  
    vxlan header由24bit組成,所以理論上VNI的數(shù)量為16777216個,解決了vid數(shù)量不足的問題。  
    此處需要說明的是:在openstack中,盡管br-tun上的vni數(shù)量增多,但br-int上的網(wǎng)絡(luò)類型只能是vlan,所有vm都有一個內(nèi)外vid(vni)轉(zhuǎn)換的過程,將用戶層的vni轉(zhuǎn)換為本地層的vid。  
    細(xì)心的你可能會有這樣的疑問:盡管br-tun上vni的數(shù)量為16777216個,但br-int上vid只有4096個,那引入vxlan是否有意義?答案是肯定的,以目前的物理機計算能力來說,假設(shè)每個vm屬于不同的tenant,1臺物理機上也不可能運行4094個vm,所以這么映射是有意義的。  
    如何理解vxlan在openstack中的使用場景   
    上圖是2計算節(jié)點間vm通信的示意圖,圖中所有的vm屬于同一個tenant,盡管在用戶層同一tenant的vni一致,但在本地層,同一tenant由nova-compute分配的vid可以不一致,同一宿主機上同一tenant的相同subnet之間的vm相互訪問不需要經(jīng)過內(nèi)外vid(vni)轉(zhuǎn)換,不同宿主機上相同tenant的vm之間相互訪問則需要經(jīng)過vid(vni)轉(zhuǎn)換。如果所有宿主機上vid和vni對應(yīng)關(guān)系一致,整個云環(huán)境最多只能有4094個tenant,引入vxlan才真的沒有意義。

  • 暗渡陳倉  
    前面說過,vm的熱遷移需要遷移前后ip和mac地址不能發(fā)生管改變,所以需要vm處于一個二層網(wǎng)絡(luò)中。vxlan是一種overlay的技術(shù),將原有的報文進行再次封裝,利用udp進行傳輸,所以也稱為mac in udp,表面上傳輸?shù)氖欠庋b后的ip和mac,實際傳播的是封裝前的ip和mac。   
    如何理解vxlan在openstack中的使用場景

  • 銷聲匿跡  
    在云環(huán)境下,接入交換機的表項大小會成為瓶頸,解決這個問題的方法無外乎兩種:  
    1.擴大表項 : 更高級的交換機有著更大的表項,使用高級交換機取代原有接入交換機,此舉會增加成本。   
    2.隱藏mac地址: 在不增加成本的前提下,使用vxlan也能達到同樣的效果。前文得知,vxlan是對原有的報文再次封裝,實現(xiàn)vxlan功能的vetp角色可以位于交換機或者vm所在的宿主機,如果vtep角色位于宿主機上,接入交換機只會學(xué)習(xí)經(jīng)過再次封裝后vtep的mac地址,不會學(xué)習(xí)其上vm的mac地址。  
    如何理解vxlan在openstack中的使用場景    
    如果vtep角色位于接入交換機上,處理報文的效率更高,但是接入交換機會學(xué)習(xí)到vm的mac地址,表項的限制依然沒有得到解決,后續(xù)對這兩種情況會做詳細(xì)說明。  
    以上就是openstack場景中使用vxlan的原因,下面將會對vxlan的實現(xiàn)原理進行詳細(xì)說明。

    四、vxlan實現(xiàn)機制

  • vxlan報文長什么樣  
    vxlan報文是在原有報文的基礎(chǔ)上再次進行封裝,已實現(xiàn)三層傳輸二層的目的。   
    如何理解vxlan在openstack中的使用場景   
    如上圖所示,原有封裝后的報文成為vxlan的data部分,vxlan header為vni,ip層header為源和目的vtep地址,鏈路層header為源vtep的mac地址和到目的vtep的下一個設(shè)備mac地址。  
    在筆者所從事的公有云架構(gòu)中,vtep角色通過宿主機上的ovs實現(xiàn),宿主機上聯(lián)至接入交換機的接口類型為trunk,在物理網(wǎng)絡(luò)中為vtep專門規(guī)劃出一個網(wǎng)絡(luò)平面   
    如何理解vxlan在openstack中的使用場景   
    vm在經(jīng)過vtep時,通過流表規(guī)則,去除vid,添加上vni  
    如何理解vxlan在openstack中的使用場景    
    vtep平面規(guī)劃的vid在vxlan的封裝過程中被打上,原因如下圖所示,vxlan的mac header中可以設(shè)置vlan tag  
    如何理解vxlan在openstack中的使用場景

  • vtep是什么  
    vtep全稱vxlan tunnel endpoint,vxlan可以抽象的理解為在三層網(wǎng)絡(luò)中打通了一條條隧道,起點和終點的兩端就是vetp。vtep是實現(xiàn)vxlan功能的重要模型,可以部署在接入交換機或者服務(wù)器上,部署在不同的位置除了前文中提到是否學(xué)習(xí)vm的mac地址外,實現(xiàn)的機制也所有不同,以下內(nèi)容如無特別說明,默認(rèn)vtep部署在接入交換機上,vtep部署在服務(wù)器上后面會單獨說明。

  • vxlan隧道的建立  
    對于物理交換機而言,vtep是物理交換機上的一個角色,換句話說,vtep只是交換機上的一部分功能,并非所有的報文都需要走vxlan隧道,報文也可能走普通的二三層轉(zhuǎn)發(fā)。那么哪些報文需要走vxlan隧道?   
    如何理解vxlan在openstack中的使用場景    
    如上圖所示,vxlan打造了一個大二層的概念,當(dāng)連接兩個不同vtep的vm需要進行通信時,就需要建立vxlan隧道。每一個大二層域稱為一個bridge-domain,簡稱bd,類似于vlan的vid,不同的bd用vni表示,bd與vni是1:1的關(guān)系。  
    創(chuàng)建bd和設(shè)置bd與vni對應(yīng)關(guān)系的配置如下:

    #    
    bridge-domain 10    //創(chuàng)建一個編號為10的bd    
    vxlan vni 5000  //設(shè)置bd10對應(yīng)的vni為5000    
    #

    vtep會根據(jù)以上配置生成bd與vni的映射關(guān)系表,該映射表可以通過命令行查看,如下所示:  
    如何理解vxlan在openstack中的使用場景   
    有了映射表后,進入vtep的報文就可以根據(jù)自己所屬的bd來確定報文封裝時該添加哪個vni。問題就剩下報文根據(jù)什么來確定自己屬于哪個bd。  
    它可以通過二層子接口接入vxlan隧道和vlan接入vxlan隧道來實現(xiàn)。二層子接口主要做兩件事:一是根據(jù)配置來檢查哪些報文需要進入vxlan隧道;二是判斷對檢查通過的報文做怎樣的處理。  
    如何理解vxlan在openstack中的使用場景   
    如上圖所示,基于二層物理接口10GE 1/0/1,分別創(chuàng)建二層子接口10GE 1/0/1.1和10GE 1/0/1.2,且分別配置其流封裝類型為dot1q和untag。配置如下:

    #  
    interface 10GE1/0/1.1 mode l2   //創(chuàng)建二層子接口10GE1/0/1.1   
    encapsulation dot1q vid 10   //只允許攜帶VLAN Tag 10的報文進入VXLAN隧道   
    bridge-domain 10   //報文進入的是BD 10  
    #  
    interface 10GE1/0/1.2 mode  l2   //創(chuàng)建二層子接口10GE1/0/1.2   
    encapsulation untag   //只允許不攜帶VLAN Tag的報文進入VXLAN隧道  
    bridge-domain 20   //報文進入的是BD 20  
    #

    基于二層物理接口10GE 1/0/2,創(chuàng)建二層子接口10GE 1/0/2.1,且流封裝類型為default。配置如下:

    #  
    interface 10GE1/0/2.1 mode l2   //創(chuàng)建二層子接口  
    10GE1/0/2.1 encapsulation default   //允許所有報文進入VXLAN隧道  
    bridge-domain 30   //報文進入的是BD 30  
    #

    至此,所有條件都已具備,就可以通過協(xié)議自動建立vxlan隧道隧道,或者手動指定vxlan隧道的源和目的ip地址在本端vtep和對端vtep之間建立靜態(tài)vxlan隧道。對于華為CE系列交換機,以上配置是在nve(network virtualization Edge)接口下完成的。配置過程如下:

    #  
    interface Nve1   //創(chuàng)建邏輯接口  
    NVE 1 source 1.1.1.1   //配置源VTEP的IP地址(推薦使用Loopback接口的IP地址)   
    vni 5000 head-end peer-list 2.2.2.2    
    vni 5000 head-end peer-list 2.2.2.3   
    #

    其中,vni 5000的對端vtep有兩個,ip地址分別為2.2.2.2和2.2.2.3,至此,vxlan隧道建立完成。  
    VXLAN隧道兩端二層子接口的配置并不一定是完全對等的。正因為這樣,才可能實現(xiàn)屬于同一網(wǎng)段但是不同VLAN的兩個VM通過VXLAN隧道進行通信。  
    總結(jié)一下,vxlan目前支持三種封裝類型,如下表所示:  
    如何理解vxlan在openstack中的使用場景   
    這種方法當(dāng)有眾多個vni的時候,需要為每一個vni創(chuàng)建一個子接口,會變得非常麻煩。  
    如何理解vxlan在openstack中的使用場景   
    此時就應(yīng)該采用vlan接入vxlan隧道的方法。vlan接入vxlan隧道只需要在物理接口下允許攜帶這些vlan的報文通過,然后再將vlan與bd綁定,建立bd與vni對應(yīng)的bd信息,最后創(chuàng)建vxlan隧道即可。   
    如何理解vxlan在openstack中的使用場景   
    vlan與bd綁定的配置如下:

    #  
    bridge-domain 10    //創(chuàng)建一個編號為10的bd 
    l2 binding vlan 10 //將bd10與vlan10綁定  
    vxlan vni 5000  //設(shè)置bd10對應(yīng)的vni為5000  
    #
  • 同子網(wǎng)vxlan通信流程  
    如何理解vxlan在openstack中的使用場景   
    如上圖所示,假設(shè)vtep是通過接入交換機上的子接口實現(xiàn),VM_A與VM_C進行首次進行通信。由于是,VM_A上沒有VM_C的MAC地址,所以會發(fā)送ARP廣播報文請求VM_C的MAC地址。就以ARP請求報文及ARP應(yīng)答報文的轉(zhuǎn)發(fā)流程,來說明MAC地址是如何進行學(xué)習(xí)的。  
    如何理解vxlan在openstack中的使用場景   
    ARP請求報文的轉(zhuǎn)發(fā)流程如下:  
    1. VM_A發(fā)送源MAC為MAC_A、目的MAC為全F、源IP為IP_A、目的IP為IP_C的ARP廣播報文,請求VM_C的MAC地址。  
    2. VTEP_1收到這種BUM(Broadcast&Unknown-unicast&Multicast)請求后,會根據(jù)頭端復(fù)制列表對報文進行復(fù)制,并分別進行封裝。根據(jù)二層子接口上的配置判斷報文需要進入VXLAN隧道。確定了報文所屬BD后,也就確定了報文所屬的VNI。同時,VTEP_1學(xué)習(xí)MAC_A、VNI和報文入接口(Port_1,即二層子接口對應(yīng)的物理接口)的對應(yīng)關(guān)系,并記錄在本地MAC表中。  
    3. 報文到達VTEP_2和VTEP_3后,VTEP對報文進行解封裝,得到VM_A發(fā)送的原始報文。同時,VTEP_2和VTEP_3學(xué)習(xí)VM_A的MAC地址、VNI和遠(yuǎn)端VTEP的IP地址(IP_1)的對應(yīng)關(guān)系,并記錄在本地MAC表中。之后,VTEP_2和VTEP_3根據(jù)二層子接口上的配置對報文進行相應(yīng)的處理并在對應(yīng)的二層域內(nèi)廣播。  
    VM_B和VM_C接收到ARP請求后,比較報文中的目的IP地址是否為本機的IP地址。VM_B發(fā)現(xiàn)目的IP不是本機IP,故將報文丟棄;VM_C發(fā)現(xiàn)目的IP是本機IP,則對ARP請求做出應(yīng)答。  
    ARP應(yīng)答報文轉(zhuǎn)發(fā)流程如下圖所示:  
    如何理解vxlan在openstack中的使用場景    
    4. 由于此時VM_C上已經(jīng)學(xué)習(xí)到了VM_A的MAC地址,所以ARP應(yīng)答報文為單播報文,單播報文就不再進行頭端復(fù)制。報文源MAC為MAC_C,目的MAC為MAC_A,源IP為IP_C、目的IP為IP_A。  
    5. VTEP_3接收到VM_C發(fā)送的ARP應(yīng)答報文后,識別報文所屬的VNI(識別過程與步驟2類似)。同時,VTEP_3學(xué)習(xí)MAC_C、VNI和報文入接口(Port_3)的對應(yīng)關(guān)系,并記錄在本地MAC表中。之后,VTEP_3對報文進行封裝。這里封裝的外層源IP地址為本地VTEP(VTEP_3)的IP地址,外層目的IP地址為對端VTEP(VTEP_1)的IP地址;外層源MAC地址為本地VTEP的MAC地址,而外層目的MAC地址為去往目的IP的網(wǎng)絡(luò)中下一跳設(shè)備的MAC地址。封裝后的報文,根據(jù)外層MAC和IP信息,在IP網(wǎng)絡(luò)中進行傳輸,直至到達對端VTEP。  
    6. 報文到達VTEP_1后,VTEP_1對報文進行解封裝,得到VM_C發(fā)送的原始報文。同時,VTEP_1學(xué)習(xí)VM_C的MAC地址、VNI和遠(yuǎn)端VTEP的IP地址(IP_3)的對應(yīng)關(guān)系,并記錄在本地MAC表中。之后,VTEP_1將解封裝后的報文發(fā)送給VM_A。
    至此,VM_A和VM_C均已學(xué)習(xí)到了對方的MAC地址。之后,VM_A和VM_C將采用單播方式進行通信。

  • 不同子網(wǎng)vxlan通信流程  
    如何理解vxlan在openstack中的使用場景   
    如上圖所示,VM_A和VM_B分別屬于10.1.10.0/24網(wǎng)段和10.1.20.0/24網(wǎng)段,且分別屬于VNI 5000和VNI 6000。VM_A和VM_B對應(yīng)的三層網(wǎng)關(guān)分別是VTEP_3上BDIF 10和BDIF20的IP地址(BDIF接口的功能與VLANIF接口類似,是基于BD創(chuàng)建的三層邏輯接口,用以實現(xiàn)不同子網(wǎng)VM之間或VXLan 網(wǎng)絡(luò)與非VXLan 網(wǎng)絡(luò)之間的通信。)。VTEP_3上存在到10.1.10.0/24網(wǎng)段和10.1.20.0/24網(wǎng)段的路由。此時,VM_A想與VM_B進行通信。  
    由于是首次進行通信,且VM_A和VM_B處于不同網(wǎng)段,VM_A需要先發(fā)送ARP廣播報文請求網(wǎng)關(guān)(BDIF 10)的MAC,獲得網(wǎng)關(guān)的MAC后,VM_A先將數(shù)據(jù)報文發(fā)送給網(wǎng)關(guān);之后網(wǎng)關(guān)也將發(fā)送ARP廣播報文請求VM_B的MAC,獲得VM_B的MAC后,網(wǎng)關(guān)再將數(shù)據(jù)報文發(fā)送給VM_B。以上MAC地址學(xué)習(xí)的過程與同子網(wǎng)互通中MAC地址學(xué)習(xí)的流程一致,不再贅述。現(xiàn)在假設(shè)VM_A和VM_B均已學(xué)到網(wǎng)關(guān)的MAC、網(wǎng)關(guān)也已經(jīng)學(xué)到VM_A和VM_B的MAC,不同子網(wǎng)VM互通報文轉(zhuǎn)發(fā)流程如下圖所示:  
    如何理解vxlan在openstack中的使用場景   
    1. VM_A先將數(shù)據(jù)報文發(fā)送給網(wǎng)關(guān)。報文的源MAC為MAC_A,目的MAC為網(wǎng)關(guān)BDIF10的MAC_10,源IP地址為IP_A,目的IP為IP_B。  
    2. VTEP_1收到數(shù)據(jù)報文后,識別此報文所屬的VNI(VNI 5000),并根據(jù)MAC表項對報文進行封裝。這里封裝的外層源IP地址為本地VTEP的IP地址(IP_1),外層目的IP地址為對端VTEP的IP地址(IP_3);外層源MAC地址為本地VTEP的MAC地址(MAC_1),而外層目的MAC地址為去往目的IP的網(wǎng)絡(luò)中下一跳設(shè)備的MAC地址。  
    3. 報文進入VTEP_3,VTEP_3對報文進行解封裝,得到VM_A發(fā)送的原始報文。然后,VTEP_3會對報文做如下處理:  
    (1) VTEP_3發(fā)現(xiàn)該報文的目的MAC為本機BDIF 10接口的MAC,而目的IP地址為IP_B(10.1.20.1),所以會根據(jù)路由表查找到IP_B的下一跳。  
    (2) 發(fā)現(xiàn)下一跳為10.1.20.10,出接口為BDIF 20。此時VTEP_3查詢ARP表項,并將原始報文的源MAC修改為BDIF 20接口的MAC(MAC_20),將目的MAC修改為VM_B的MAC(MAC_B)。  
    (3) 報文到BDIF20接口時,識別到需要進入VXLAN隧道(VNI 6000),所以根據(jù)MAC表對報文進行封裝。這里封裝的外層源IP地址為本地VTEP的IP地址(IP_3),外層目的IP地址為對端VTEP的IP地址(IP_2);外層源MAC地址為本地VTEP的MAC地址(MAC_3),而外層目的MAC地址為去往目的IP的網(wǎng)絡(luò)中下一跳設(shè)備的MAC地址。  
    4. 報文到達VTEP_2后,VTEP_2對報文進行解封裝,得到內(nèi)層的數(shù)據(jù)報文,并將其發(fā)送給VM_B。VM_B回應(yīng)VM_A的流程與上述過程類似,不再贅述。  
    需要說明的是:VXLan 網(wǎng)絡(luò)與非VXLan 網(wǎng)絡(luò)之間的互通,也需要借助于三層網(wǎng)關(guān)。其實現(xiàn)不同點在于報文在VXLan 網(wǎng)絡(luò)側(cè)會進行封裝,而在非VXLan 網(wǎng)絡(luò)側(cè)不需要進行封裝。報文從VXLAN側(cè)進入網(wǎng)關(guān)并解封裝后,就按照普通的單播報文發(fā)送方式進行轉(zhuǎn)發(fā)。

    五、vtep角色部署在ovs中

  • ovs如何創(chuàng)建vxlan隧道  
    從前文得知,vtep部署在接入交換機上時還是會學(xué)習(xí)到vm的mac地址,并沒有解決表項限制問題,這也是為什么在公有云場景下vtep角色都是部署在宿主機的ovs中。  
    不同于在接入交換機上通過手動的方式建立vxlan隧道,openstack中負(fù)責(zé)網(wǎng)絡(luò)的neutron-server啟動后,會自己建立隧道,下面來介紹neutron-server如何自動建立隧道。  
    如何理解vxlan在openstack中的使用場景   
    如上圖所示,每個宿主機上的ovs是由ovs-aget創(chuàng)建,當(dāng)計算節(jié)點1接入網(wǎng)絡(luò)中時,他首先會去向neutron-server報告自己的網(wǎng)絡(luò)類型和local_ip,neutron-server收到這些資源信息后(neutron中network、port、subnet都稱為資源)會進行處理,找到相同網(wǎng)絡(luò)類型的其他計算節(jié)點并為他們之間創(chuàng)建隧道,同時將這個消息同步給其他計算節(jié)點上的ovs-agent。    
    如何理解vxlan在openstack中的使用場景   
    每當(dāng)neutron資源發(fā)生變化時,或者ovs對流量不知該處和處理時,都會像neutron-server匯報或等待它的通知,再加上之前的流表,是不是感覺很熟悉?沒錯,neutron-server除了接受api請求外,他還是一個sdn控制器。

  • 與接入交換機實現(xiàn)vtep的區(qū)別  
    1. 使用ovs實現(xiàn)的vtep接入交換機只會學(xué)習(xí)經(jīng)過vtep封裝后的mac地址,學(xué)習(xí)不到vm的mac地址,這樣解決了mack地址表項的問題。  
    2. 物理交換機是通過bd和vni綁定的方法建立不同的隧道,ovs實現(xiàn)時每一個vtep內(nèi)可以有多個vsi(virtual switch instance),每一個vsi對用一個vni。  
    以上就是vxlan在openstack中通過物理設(shè)備或者ovs實現(xiàn)的方式。

關(guān)于如何理解vxlan在openstack中的使用場景就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

分享名稱:如何理解vxlan在openstack中的使用場景-創(chuàng)新互聯(lián)
URL網(wǎng)址:http://chinadenli.net/article14/ehpge.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT響應(yīng)式網(wǎng)站服務(wù)器托管網(wǎng)站設(shè)計搜索引擎優(yōu)化關(guān)鍵詞優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

1成都定制網(wǎng)站建設(shè)