Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ËÕÄþ˽ÓÐÔÆ SR-IOV ÐéÄâÍøÂçÐÔÄÜÓÅ»¯
 
  3901  次浏览      29
 2018-11-23 
 
±à¼­ÍƼö:
±¾ÎÄÀ´×ÔÓÚinfoq£¬SR-IOV ¼¼ÊõÊÇÒ»ÖÖ»ùÓÚÓ²¼þµÄÐéÄ⻯½â¾ö·½°¸£¬¿ÉÌá¸ßÍøÂçÐÔÄܺͿÉÉìËõÐÔ¡£

1. SR-IOV ½éÉÜ

SR-IOV ±ê×¼ÔÊÐíÔÚÐéÄâ»úÖ®¼ä¸ßЧ¹²Ïí PCIe£¨Peripheral Component Interconnect Express£¬¿ìËÙÍâÉè×é¼þ»¥Á¬£©É豸£¬²¢ÇÒËüÊÇÔÚÓ²¼þÖÐʵÏֵģ¬¿ÉÒÔ»ñµÃÄܹ»Óë±¾»úÐÔÄÜæÇÃÀµÄ I/O ÐÔÄÜ¡£SR-IOV ¹æ·¶¶¨ÒåÁËеıê×¼£¬¸ù¾Ý¸Ã±ê×¼£¬´´½¨µÄÐÂÉ豸¿ÉÔÊÐí½«ÐéÄâ»úÖ±½ÓÁ¬½Óµ½ I/O É豸¡£

µ¥¸ö I/O ×ÊÔ´¿ÉÓÉÐí¶àÐéÄâ»ú¹²Ïí¡£¹²ÏíµÄÉ豸½«ÌṩרÓõÄ×ÊÔ´£¬²¢ÇÒ»¹Ê¹Óù²ÏíµÄͨÓÃ×ÊÔ´¡£ÕâÑù£¬Ã¿¸öÐéÄâ»ú¶¼¿É·ÃÎÊΨһµÄ×ÊÔ´¡£Òò´Ë£¬ÆôÓÃÁË SR-IOV ²¢ÇÒ¾ßÓÐÊʵ±µÄÓ²¼þºÍ OS Ö§³ÖµÄ PCIe É豸£¨ÀýÈçÒÔÌ«Íø¶Ë¿Ú£©¿ÉÒÔÏÔʾΪ¶à¸öµ¥¶ÀµÄÎïÀíÉ豸£¬Ã¿¸ö¶¼¾ßÓÐ×Ô¼ºµÄ PCIe ÅäÖÿռ䡣

ÏÂͼչʾÁËÕë¶Ô PCIe Ó²¼þµÄ SR-IOV ¼¼ÊõÌåϵʾÒâͼ¡£

ͼ 1 SR-IOV ¼¼ÊõÌåϵ¼Ü¹¹

Ö§³Ö SR-IOV µÄÍø¿¨Ö÷Òª¹¦ÄÜÄ£¿é·ÖΪ£º

ÎïÀí¹¦ÄÜ (Physical Function, PF)

Ö§³Ö SR-IOV µÄ¹ÜÀí¡£¿ÉÒÔ´´½¨ VF£¬¶ÔÓÚÍø¿¨£¬ÀíÂÛÉÏ¿ÉÒÔ´´½¨ 256 ¸ö VF¡£Ò»°ãÇé¿öÏ£¬ ǧÕ×Íø¿¨ÄÜÖ§³Ö´ï 7 ¸ö VF£¬ ÍòÕ×Íø¿¨ÄÜÖ§³Ö´ï 63 ¸ö VF¡£

ÐéÄ⹦ÄÜ (Virtual Function, VF)

VF ¿ÉÒÔÀí½âΪһ¸öÐéÄâÍø¿¨£¬ÓµÓжÀÁ¢ÄÚ´æ¿Õ¼ä¡¢ÖÐ¶ÏºÍ Direct Memory Access (DMA) Á÷¡£VF ÊÇ PF ÐéÄâ³öµÄÒ»¸öʵÀý£¬ÒÔÒ»¸ö¶ÀÁ¢µÄÍø¿¨ÐÎʽչÏÖ¡£VF ÊÇÒ»ÖÖÇáÁ¿¼¶ PCIe ¹¦ÄÜ£¬¿ÉÒÔÓë PF ÒÔ¼°Æä´´½¨µÄËùÓÐ VF ¹²ÏíÒ»¸ö»ò¶à¸öÎïÀí×ÊÔ´¡£

½»»»¹¦ÄÜ (Layer 2 Classifier/Sorter switch)

Õâ¸ö½»»»»úÆäʵÊÇÎïÀíÍø¿¨ÄÚÖõġ£Á÷Á¿½øÈëÎïÀíÍø¿¨ºó£¬¾­¹ýÕâ¸ö½»»»»úÈ»ºó·Ö·¢µ½²»Í¬µÄ VF ÉÏ¡£

ʹÓà SR-IOV ¼¼ÊõµÄÖ÷ÒªÓŵãÊÇ£º

Ìá¸ßÐéÄâ»ú°üת·¢Ð§ÂÊ

¼õÉÙ±¨ÎÄÔÚÖ÷»úÄÚ²¿µÄ´«ÊäÑÓʱÒÔ¼°ÑÓʱ¶¶¶¯

ÓÉÓÚÈÆ¹ýÁËÖ÷»úµÄЭÒéÕ»ÒÔ¼° VMM£¨Virtual Machine Manager£©£¬¼õÉÙÁËÖ÷»úÔÚÍøÂ籨ÎÄÊÕ·¢ÖеÄ×ÊÔ´ÏûºÄ

ͬʱ£¬ÓÉÓÚ SR-IOV ¼¼ÊõʹÐéÄâ»úͨ¹ý PCI-passthrough µÄ·½Ê½Ö±½ÓʹÓà VF£¬ÈƹýÁËÖ÷»úµÄÄÚºËЭÒéÕ»ÒÔ¼° VMM£¬¹Ê´æÔÚÒÔϾÖÏÞ£º

Host ÎÞ·¨¼à¿Ø VF µÄ״̬

°²È«×éÎÞ·¨Ó¦ÓÃ

ÐéÄâ»úÈÈÇ¨ÒÆÎÞ·¨ÊµÏÖ£¬Ç¨ÒƵÄÖ§³ÖÄÜÁ¦²»¹»Áé»î

¶Ô HA µÄÖ§³Ö²»Ì«¸ß

sriov ²»Ö§³Ö vxlan

2. SR-IOV ÐÔÄÜ

±¾²âÊԶԱȲâÊÔÍòÕ×ÍøÂçÖÐ SRIOV ÐéÄâ»úºÍ OVS ÐéÄâ»úÔÚÍøÂç¸ºÔØ½Ï¸ßÇé¿öϵÄÐéÄâÍøÂç±íÏÖ£¬×ܽá·ÖÎö£¬Í¬Ê±ÎªÒÔºó SRIOV ÐéÄâ»úºÍÆäËüÀàÐ͵ÄÐéÄâ»ú×ö¶Ô±È¸ø³ö²Î¿¼¡£

2.1 ²âÊÔÐÔÄÜÖ¸±ê

Ö÷Òª¶ÔÒÔϼ¸¸öÍøÂçÐÔÄÜÖ¸±ê½øÐвâÊÔ£º

¸ºÔØ£¨OfferedLoad£©£ºÍøÂçÁ÷Á¿¸ººÉ°Ù·Ö±È£¬µ±Ç°Á÷Á¿Õ¼¶Ë¿ÚËÙÂʵıÈÀý£¨°Ù·Ö±È£©

°üËÙ£¨Frame Per-second£©£ºÊý¾Ý°üÿÃëµÄÊÕ / ·¢¸öÊý

ƽ¾ùʱÑÓ£¨Average Latency£©£ºÊý¾Ý°ü´«ÊäµÄƽ¾ùÑÓ³Ù£¨ºÁÃ룬ms£©

2.2 ²âÊÔÍØÆËͼ

SR-IOV ²âÊÔ»·¾³ÍøÂçÍØÆË£º

 

Openvswitch ²âÊÔ»·¾³ÍøÂçÍØÆË£º

2.3 ²âÊÔ½á¹û

¿ÉÒÔ¿´³ö SR-IOV ¸÷·½ÃæÐÔÄܶ¼ÒªÓÅÓÚ Openvswitch¡£

3. SR-IOV ¸ß¿ÉÓ÷½°¸

ÒòΪ²ÉÓà SR-IOV£¬ÐéÄâ»úÁ÷Á¿²»¾­¹ýËÞÖ÷»ú²Ù×÷ϵͳ£¬ËùÒÔ²»ÄÜÔÚËÞÖ÷»ú²Ù×÷ϵͳ²ãÃæ×ö¸ß¿ÉÓ㬱ØÐëÔÚÐéÄâ»úÄÚ²¿×ö¸ß¿ÉÓá£SR-IOV ¸ß¿ÉÓ÷½°¸ÈçÏÂͼ£º

£¨1£© vm ¹ÒÔØ²»Í¬ pf µÄ vf£¬ÔÚ vm ÄÚ²¿ÅäÖÃÍø¿¨ bond£¬¿ÉÒÔ¸ù¾ÝÐèÇóÑ¡Ôñ balance-rr¡¢active-backup »òÕß balance-xor ²ßÂÔ¡£

£¨2£© vm ¹ÒÔØµÄ vf µÄ mac µØÖ·±ØÐëÉèÖóÉÒ»Ñù¡£ÕâÑùÔÚÐéÄâ»úÅäÖÃÍø¿¨ bond µÄÇé¿öÏ£¬ÈÔÈ»¿ÉÒÔʹÓà vf µÄ mac spoofing check ¹¦ÄÜ¡£

£¨3£© pf ÅäÖà lacp bond£¬½»»»»ú²àÅäÖö¯Ì¬Á´Â·¾ÛºÏ£¬ÊµÏ־ۺϴø¿íµÄ¶¯Ì¬µ÷Õû¡£

4. OpenStack ´´½¨ SR-IOV ÐéÄâ»ú¹ý³Ì

Openstack ĬÈϲ»Ö§³Ö SR-IOV µÄ¸ß¿ÉÓã¬neutron ÖÐÒ»¸öÂß¼­µÄ port ¶ÔÓ¦Ò»¸ö vf ¿Ú¡£ËùÒÔÎÒÃÇÐèÒª¶Ô openstack ½øÐиÄÔ죬×ÜÌå˼·ÊÇ£¬Í¨¹ýÔÚµ÷Óà Neutron Create Port µÄ api ʱºò£¬¶Ô Port ´òÉÏ bond ±êÇ©£¬Nova ÔÚ´´½¨Ðé»úµÄʱºòͨ¹ý¶ÁÈ¡µ½¶ÔÓ¦ port µÄ bond ±êÇ©£¬Îª¸Ã port ·ÖÅäÁ½¸ö VF ¿Ú£¬²¢ÇÒÔÚ·ÖÅä VF ¿ÚµÄ pci ×ÊÔ´µÄʱºò£¬Ä¬ÈϵİÑÁ½¸ö vf ·ÖÅäÔÚ²»Í¬µÄ pf ÉÏ¡£¶ÔÓ¦ÔÚ port µÄ binding:profile ÉÏÐèҪչʾʹÓõÄÁ½¸ö vf ¿ÚµÄ pci ÐÅÏ¢¡£

4.1 µ÷Óà neutron api ´´½¨ sriov µÄ port

µ÷Óà neutron ½Ó¿Ú´´½¨ sriov port£¬ÔÚ profile ÖÐ¶Ô Port ´òÉÏ bond ±êÇ©£¬ÕâÀïÎÞÐè׸Êö¡£ÃüÁîÈçÏ£º

neutron port-create --binding:vnic_type =direct --binding:profile type=dict bond =true

4.2 µ÷Óà nova api ´´½¨ÐéÄâ»ú

Èë¿ÚΪ nova/api/openstack/compute/servers µÄ create ·½·¨£¬¼ì²éһϵÁвÎÊýºÍ policy£¬È»ºóµ÷Óà compute_api µÄ create ·½·¨:

compute_api ÊÇ nova/compute/api.py Ä£¿é£¬ÔÚ¸ÃÎļþÖÐÕÒµ½ create ·½·¨£¬¸Ã·½·¨½Ó×ŵ÷Óà _create_instance ·½·¨£¬ÔÚ _create_instance ·½·¨Öе÷Óà _validate_and_build_base_options ·½·¨¶ÔËùÓеÄÊäÈë²ÎÊýºÍ²ßÂÔ×ö¼ì²é£¬²¢ÇÒ·â×° pci ÇëÇó¡£·â×° pci ÇëÇóµÄ·½·¨ÊÇ nova/network/neutronv2/api.py µÄ create_pci_requests_for_sriov_ports ·½·¨£¬¸Ã·½·¨»áÏȵ÷Óà neutron api »ñÈ¡ port µÄ vnic_type¡¢phynet_name¡¢bond ÊôÐÔ£¬¸ù¾Ý bond ÊôÐÔÈ·¶¨ vf µÄÊýÁ¿£¨bond Ϊ true£¬vf µÄÊýÁ¿ÊÇ 2£¬·ñÔò vf ÊýÁ¿ÊÇ 1£©¡£

·µ»Øµ½ nova/compute/api.py µÄ _create_instance ·½·¨£¬¸Ã·½·¨½Ó×ŵ÷Óà compute_task_api µÄ schedule_and_build_instances ·½·¨:

compute_task_api ÊÇ nova/conductor/api.py Ä£¿é¡£ÕâÀïûÓÐÖ´ÐÐʲô²Ù×÷£¬Ö±½Óµ÷ÓÃÁË conductor_compute_rpcapi µÄ schedule_and_build_instances ·½·¨:

¸Ã·½·¨Ô¶³Ì¹ý³Ìµ÷Óà api£¬¼´ nova/conductor/rpcapi.py Ä£¿é£¬¸Ã·½·¨»á¶Ô°æ±¾½øÐмì²é£¬È»ºóµ÷Óà RPC:

cast ±íʾÒì²½µ÷Óã¬schedule_and_build_instances ÊÇÔ¶³Ìµ÷Óõķ½·¨£¬kw ÊÇ´«µÝµÄ²ÎÊý¡£ÏÖÔÚ nova-api ÈÎÎñÍê³É£¬´Ëʱ»áÏìÓ¦Óû§ÇëÇó£¬ÐéÄâ»ú״̬Ϊ building¡£

4.3 nova conductor

nova-api Ïò nova-conductor ·¢Æð RPC µ÷Ó㬽ø³ÌÌøµ½ nova-conductor ·þÎñ£¬Èë¿ÚΪ nova/conductor/manager.py µÄ schedule_and_build_instances ·½·¨£¬¸Ã·½·¨Ê×Ïȵ÷ÓÃÁË _schedule_instances ·½·¨£¬ÔÚ _schedule_instances ·½·¨Öе÷ÓÃÁË scheduler_client µÄ select_destinations ·½·¨:

Õâ¸ö·½·¨×îÖÕµ÷Óõ½ nova/scheduler/client/query.py Ï嵀 select_destinations ·½·¨£¬Ö´ÐÐ RPC µÄµ÷Óá£

RPC ·âװͬÑùÊÇÔÚ scheduler µÄ rpcapi ÖÐʵÏÖ¡£¸Ã·½·¨ RPC µ÷ÓôúÂëÈçÏÂ:

Call ±íʾͬ²½µ÷Ó㬴Ëʱ nova-conductor ²¢²»»áÍ˳ö£¬¶øÊǶÂÈûµÈ´ýÖ±µ½ nova-scheduler ·µ»Ø¡£Òò´Ëµ±Ç°×´Ì¬Îª nova-conductor Ϊ blocked ״̬£¬µÈ´ý nova-scheduler ·µ»Ø£¬nova-scheduler ½Ó¹ÜÈÎÎñ¡£

4.4 nova scheduler

nova scheduler ÖÐÈë¿ÚΪ nova/scheduler/manager.py Ä£¿éµÄ select_destinations ·½·¨£¬¸Ã·½·¨»áµ÷Óà driver µÄ select_destinations ·½·¨£¬ÕâÀïµÄ driver Êǵ÷¶ÈË㷨ʵÏÖ£¬Í¨¹ý filters ¹ýÂ˵ô²»Âú×ãÌõ¼þµÄ¼ÆËã½Úµã£¬Ê£ÏµĽڵãͨ¹ý weigh ·½·¨¼ÆËãȨֵ£¬×îºóÑ¡ÔñȨֵ¸ßµÄ×÷ΪºòÑ¡¼ÆËã½Úµã·µ»Ø¡£×îºó nova-scheduler ·µ»Øµ÷¶È½á¹ûµÄ hosts ¼¯ºÏ£¬ÈÎÎñ½áÊø£¬·µ»Øµ½ nova-conductor ·þÎñ¡£

nova/scheduler/manager.py

nova/scheduler/driver.py

nova/scheduler/filter_scheduler.py

4.5 nova condutor

»Øµ½ nova-conductor µÄ schedule_and_build_instances ·½·¨£¬nova-conductor µÈ´ý nova-scheduler ·µ»Øºó£¬Äõ½µ÷¶ÈµÄ¼ÆËã½ÚµãÁÐ±í¡£ÒòΪ¿ÉÄÜͬʱÆô¶¯¶à¸öÐéÄâ»ú£¬Òò´ËÑ­»·µ÷ÓÃÁË compute_rpcapi µÄ build_and_run_instance ·½·¨¡£

Compute_rpcpai λÓÚ nova/compute/rpcapi Ä£¿é£¬¸Ã·½·¨Ïò nova-compute ·¢Æð RPC ÇëÇó£º

·¢ÆðµÄÊÇÒì²½ RPC£¬Òò´Ë nova-conductor ÈÎÎñ½áÊø£¬½øÈë nova-compute ·þÎñ¡£

4.6 nova compute

Èë¿ÚÊÇ nova/compute/manager.py µÄ build_and_run_instance ·½·¨£¬¸Ã·½·¨»áµ÷Óà _do_build_and_run_instance ·½·¨£¬¸Ã·½·¨»á¸üÐÂÐéÄâ»ú״̬£¬È»ºóµ÷Óà _build_and_run_instance ·½·¨£¬¸Ã·½·¨»áÔ¤ÏÈÉùÃ÷Õ¼ÓüÆËã½ÚµãµÄ×ÊÔ´¡£

ÆäÖÐÔÚ instance_claim ·½·¨ÖлᴦÀí pci µÄÇëÇó£¬instance_claim¡ú claim_instance £¨nova/pci/manager.py£©¡ú_claim_instance ¡úconsume_requests £¨nova/pci/stats.py£©, ÔÚ nova/pci/stats.py Öлá¸ù¾Ý²»Í¬µÄÍø¿¨°Ñ pci ×ÊÔ´·ÖΪ²»Í¬µÄ pool¡£

ÔÚ consume_requests ·½·¨Öлá¾ßÌå·ÖÅä pci ×ÊÔ´Ò²¾ÍÊÇ vf£¬

Ïȸù¾ÝÊ£Óà¿ÉÓÃµÄ vf µÄÊýÁ¿½« pool ½øÐÐÅÅÐò£¬Èç¹û port µÄ bond ÊôÐÔΪ false£¬Ôò count ÊýÁ¿Îª 1£¬Ôò´Ó¿ÉÓà vf ÊýÁ¿×î¶àµÄ pool ÖзÖÅäÒ»¸ö vf£¬ÕâÑùʹ²»Í¬Íø¿¨µÄ¸ºÔؾ¡Á¿¾ùºâ¡£Èç¹û port µÄ bond ÊôÐÔΪ true£¬Ôò count ÊýÁ¿Îª 2£¬Ôò´ÓÁ½¸ö pool Öи÷·ÖÅäÒ»¸ö vf£¬´ïµ½¸ß¿ÉÓõÄÄ¿µÄ¡£

»Øµ½ nova/compute/manager.py µÄ build_and_run_instance ·½·¨£¬Õâ¸ö·½·¨½ÓÏÂÀ´»áµ÷Óà spawn_n ·½·¨£¬¿ªÊ¼ÕæÕý´´½¨ÐéÄâ»ú¡£ÕâÀﲻͬµÄÐéÄâ»ú¼¼Êõ¶ÔÓ¦²»Í¬µÄ driver£¬ÆäÖÐ libvrit µÄ driver ¶ÔÓ¦ nova/virt/libvirt/driver.py¡£´Ó spawn ·½·¨¿ªÊ¼£¬»áÏÈ»ñÈ¡ instance µÄ´ÅÅÌ¡¢¾µÏñ¡¢ÍøÂçµÈÐÅÏ¢£¬È»ºóÉú³É instance µÄ xml Îļþ¡£

ÔÚ _get_guest_xml ·½·¨Öлáµ÷Óà _get_guest_config ·½·¨£¬ÆäÖÐ sriov Íø¿¨µÄ²¿·ÖÈçÏ£º

ÕâÀïÈç¹û port µÄ bond Ϊ true£¬Ôò»á½«Á½¿éÍø¿¨µÄÐÅϢдÈë xml ÎļþÖС£

»Øµ½ spawn ·½·¨£¬½ÓÏÂÀ´»áµ÷Óà _create_domain_and_network ·½·¨£¬¸Ã·½·¨»áµ÷Óà plug_vifs ·½·¨´´½¨ qbr ºÍ qvo£¬½Ó×Å´´½¨ÐéÄâ»ú£¬ÐéÄâ»ú״̬Ϊ pause¡£È»ºóµÈ´ý neutron-server µÄÏûÏ¢£¬Èç¹ûµÈµ½ÏûÏ¢ºó½«ÐéÄâ»ú״̬¸ÄΪ running£¬·ñÔò³¬Ê±Ã»Óеȵ½£¬Ôò½«ÐéÄâ»úÏú»Ù¡£

4.7 neutron sriov agent

ÔÚ neutron/plugins/ml2/ drivers/mech_sriov/ agent/sriov_nic_agent.py ÖÐ daemon_loop ·½·¨»á¶¨Ê±¼ì²â vf µÄ״̬±ä»¯£¬Èç¹ûÓÐ vf ·¢Éú±ä»¯£¬½øÈë process_network_devices ·½·¨£¬Ôڸ÷½·¨ÖУ¬»á¸ù¾Ý vf µÄ״̬ÊÇÌí¼Ó¸ü¸Äɾ³ý×ö²»Í¬µÄ´¦Àí¡£

ÆäÖÐÔÚ treat_devices_added_updated ·½·¨ÖУ¬Èç¹û port µÄ bond Ϊ true£¬ÐèÒª¸üÐÂÁ½¸ö vf µÄ״̬£º

È»ºó»áµ÷Óà rpc£¬Í¨Öª neutron-server ¸üÐÂ״̬¡£

ÕâÀïÊÇͬ²½µ÷Óã¬neutron-server ½ÓÊÕµ½ÏûÏ¢ºó£¬»áÏò nova ·¢Ë͸üРport µÄÏûÏ¢£¬½Ó×Å nova compute »á resume ״̬ÊÇ pause µÄÐéÄâ»ú¡£

ÖÁ´Ë£¬´øÓÐ sriov ¸ß¿ÉÓÃÍø¿¨µÄÐéÄâ»ú´´½¨Íê³É¡£

 

   
3901 ´Îä¯ÀÀ       29
Ïà¹ØÎÄÕÂ

ÔÆ¼ÆËãµÄ¼Ü¹¹
¶ÔÔÆ¼ÆËã·þÎñÄ£ÐÍ
ÔÆ¼ÆËãºËÐļ¼ÊõÆÊÎö
Á˽âÔÆ¼ÆËãµÄ©¶´
Ïà¹ØÎĵµ

ÔÆ¼ÆËã¼ò½é
ÔÆ¼ÆËã¼ò½éÓëÔÆ°²È«
ÏÂÒ»´úÍøÂç¼ÆËã--ÔÆ¼ÆËã
ÈídzÎöÔÆ¼ÆËã
Ïà¹Ø¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤