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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
openstackÍøÂ磨neutron£©Ä£Ê½Ö®GREµÄ»ù±¾Ô­Àí
 
×÷Õߣºstarof À´Ô´£º²©¿ÍÔ° ·¢²¼ÓÚ£º 2015-01-12
  17527  次浏览      27
 

neutronÍøÂçÄ¿µÄÊÇΪOpenStackÔÆ¸üÁé»îµÄ»®·ÖÍøÂ磬ÔÚ¶à×â»§µÄ»·¾³ÏÂÌṩ¸øÃ¿¸ö×â»§¶ÀÁ¢µÄÍøÂç»·¾³¡£

neutron»ìºÏʵʩÁ˵ڶþ²ãµÄVLANºÍµÚÈý²ãµÄ·ÓÉ·þÎñ£¬Ëü¿ÉΪ֧³ÖµÄÍøÂçÌṩ·À»ðǽ£¬¸ºÔؾùºâÒÔ¼°IPSec VPNµÈÀ©Õ¹¹¦ÄÜ¡£

neutronÊÇopenstackÖÐÒ»¸öÖØÒªÄ£¿é£¬Ò²ÊDZȽÏÄÑÀí½âºÍdebugµÄÄ£¿éÖ®Ò»¡£

Ò»¡¢·ÖÎö¾­µäµÄÈý¸ö½ÚµãµÄHavanaµÄOpenStackÖÐÍøÂç

ͼ1£ºÈý½ÚµãopensÍøÂç

·ÖΪÈý¸öÍøÂ磺

1¡¢External Network/API Network£¬Õâ¸öÍøÂçÊÇÁ´½ÓÍâÍøµÄ£¬ÎÞÂÛÊÇÓû§µ÷ÓÃOpenStackµÄAPI£¬»¹ÊÇ´´½¨³öÀ´µÄÐéÄâ»úÒª·ÃÎÊÍâÍø£¬»òÕßÍâÍøÒªsshµ½ÐéÄâ»ú£¬¶¼ÐèҪͨ¹ýÕâ¸öÍøÂç

2¡¢Data Network£¬Êý¾ÝÍøÂ磬ÐéÄâ»úÖ®¼äµÄÊý¾Ý´«Êäͨ¹ýÕâ¸öÍøÂçÀ´½øÐУ¬±ÈÈçÒ»¸öÐéÄâ»úÒªÁ¬½Óµ½ÁíÒ»¸öÐéÄâ»ú£¬ÐéÄâ»úÒªÁ¬½ÓÐéÄâ·Óɶ¼ÊÇͨ¹ýÕâ¸öÍøÂçÀ´½øÐÐ

3¡¢Management Network£¬¹ÜÀíÍøÂ磬OpenStack¸÷¸öÄ£¿éÖ®¼äµÄ½»»¥£¬Á¬½ÓÊý¾Ý¿â£¬Á¬½ÓMessage Queue¶¼ÊÇͨ¹ýÕâ¸öÍøÂçÀ´½øÐС£

½«ÕâÈý¸öÍøÂç¸ôÀ룬һ·½ÃæÊǰ²È«£¬ÔÚÐéÄâ»úÀïÃæ£¬ÎÞÂÛ²ÉÓÃʲôÊֶΣ¬¸ÉÈŵͼ½ö½öÊÇData Network£¬¶¼²»¿ÉÄÜ·ÃÎʵ½ÎÒµÄÊý¾Ý¿â¡£Ò»·½ÃæÊÇÁ÷Á¿·ÖÀ룬Management NetworkµÄÁ÷Á¿²»ÊǺܴóµÄ£¬¶øÇÒÒ»°ã¶¼»á±È½ÏÓÅÑŵÄʹÓ㬶øData NetworkºÍExternal Network¾ÍÐèÒªÓÐÁ÷Á¿¿ØÖƲßÂÔ¡£

Õâ¸öÍøÂç½á¹¹ÓÐµãÆæ¹Ö£¬³ýÁËControlller½ÚµãÊÇÁ½ÕÅÍø¿¨Ö®Í⣬ÆäËûµÄ¶¼¶àÁËÒ»ÕÅÍø¿¨Á¬½Óµ½External Network¡£Õâ¸öÍø¿¨ÊÇÓÃÀ´×öapt-getµÄ£¬ÒòΪCompute Node°´ËµÊÇûÓÐÍø¿¨Á¬½Óµ½ÍâÍøµÄ£¬ÎªÁËapt-getÌí¼ÓÁËeth0£»NetWork NodeËäÈ»ÓÐÒ»¸öÍø¿¨eth1ÊÇÁ¬½ÓÍâÍøµÄ£¬¶øÔÚneutronÅäÖúÃ֮ǰ£¬Õâ¸öÍø¿¨Í¨³£ÊÇûÓÐIPµÄ£¬ÎªÁËapt-getÒ²Ìí¼ÓÁËeth0;ÓÐÈË˵¿ÉÒÔͨ¹ýroute¹æÔò¶¼Í¨¹ýControllerÁ¬½Óµ½ÍâÍø£¬µ«ÊǶÔÓÚ³õѧÕߣ¬ÕâÑù±È½ÏÈÝÒײÙ×÷¡£

¶þ¡¢neutronÈý¸ö½Úµã¼ò½é

neutronÊÇÓÃÀ´´´½¨ÐéÄâÍøÂçµÄ£¬ËùνÐéÄâÍøÂ磬¾ÍÊÇÐéÄâ»úÆô¶¯µÄʱºò»áÓÐÒ»¸öÐéÄâÍø¿¨£¬ÐéÄâÍø¿¨»áÁ¬½Óµ½ÐéÄâswitchÉÏ£¬ÐéÄâ½»»»»úÁ¬½Óµ½ÐéÄârouterÉÏ£¬ÐéÄâ·ÓÉÆ÷×îÖÕºÍÎïÀíÍø¿¨ÁªÍ¨£¬´Ó¶øÐéÄâÍøÂçºÍÎïÀíÍøÂçÁªÍ¨ÆðÀ´¡£

neutron·Ö³É¶à¸öÄ£¿é·Ö²¼ÔÚÈý¸ö½ÚµãÉÏ¡£

1.Controller½Úµã£º

neutron-server£¬ÓÃÓÚ½ÓÊÜAPIÇëÇó´´½¨ÍøÂ磬×ÓÍø£¬Â·ÓÉÆ÷µÈ£¬È»¶ø´´½¨µÄÕâЩ¶«Î÷½ö½öÊÇһЩÊý¾Ý½á¹¹ÔÚÊý¾Ý¿âÀïÃæ

2.Network½Úµã£º

neutron-l3-agent£¬ÓÃÓÚ´´½¨ºÍ¹ÜÀíÐéÄâ·ÓÉÆ÷£¬µ±neutron-server½«Â·ÓÉÆ÷µÄÊý¾Ý½á¹¹´´½¨ºÃ£¬neutron-l3-agentÊÇ×ö¾ßÌåÊÂÇéµÄ£¬ÕæÕýµÄµ÷ÓÃÃüÁîÐн«ÐéÄâ·ÓÉÆ÷£¬Â·ÓÉ±í£¬namespace£¬iptables¹æÔòÈ«²¿´´½¨ºÃ¡£

neutron-dhcp-agent£¬ÓÃÓÚ´´½¨ºÍ¹ÜÀíÐéÄâDHCP server£¬Ã¿¸öÐéÄâÍøÂç¶¼»áÓÐÒ»¸öDHCP server£¬Õâ¸öDHCP serverΪÕâ¸öÐéÄâÍøÂçÀïÃæµÄÐéÄâ»úÌṩIP¡£

neutron-openvswitch-plugin-agent£¬Õâ¸öÊÇÓÃÓÚ´´½¨L2µÄswitchµÄ£¬ÔÚNetwork½ÚµãÉÏ£¬RouterºÍDHCP Server¶¼»áÁ¬½Óµ½¶þ²ãµÄswitchÉÏ¡£

3.Compute½Úµã£º

neutron-openstackvswitch-plugin-agent£¬Õâ¸öÊÇÓÃÓÚ´´½¨L2²ãswitchµÄ£¬ÔÚcompute½ÚµãÉÏ£¬ÐéÄâ»úµÄÍø¿¨Ò²ÊÇÁ¬½Óµ½¶þ²ãµÄswitchÉÏ¡£

Èý¡¢×â»§ÍøÂç´´½¨¹ý³Ì

µ±ÎÒÃǴºÃÁËOpenStack£¬È»ºó´´½¨ºÃÁËtenantºó£¬ÎÒÃÇ»áΪÕâ¸ötenant´´½¨Ò»¸öÍøÂç¡£

ͼ2£º×â»§ÍøÂç´´½¨¹ý³Ì

½áºÏÉÏͼ˵Ã÷¸øÒ»¸ö×â»§´´½¨ÍøÂçµÄÁ÷³Ì£º

1¡¢ÎªÕâ¸öTenant´´½¨Ò»¸öprivate network£¬²»Í¬µÄprivate networkÊÇÐèҪͨ¹ýVLAN tagging½øÐиôÀëµÄ£¬»¥ÏàÖ®¼ä¹ã²¥£¨broadcast£©²»Äܵ½´ï£¬ÕâÀïÎÒÃÇÎÒÃÇÓõÄÊÇGREģʽ£¬Ò²ÐèÒªÒ»¸öÀàËÆVLANIDµÄ¶«Î÷£¬³ÆÎªSegment ID

2¡¢Îªprivate network´´½¨Ò»¸ösubnet£¬subnet²ÅÊÇÕæÕýÅäÖÃIPÍø¶ÎµÄµØ·½£¬¶ÔÓÚË½Íø£¬ÎÒÃdz£³£ÓÃ192.168.0.0/24Õâ¸öÍø¶Î

3¡¢ÎªÕâ¸öTenant´´½¨Ò»¸öRouter,²ÅÄܹ»·ÃÎÊÍâÍø

4¡¢½«private networkÁ¬½Óµ½RouterÉÏ

5¡¢´´½¨Ò»¸öExternal Network

6¡¢´´½¨Ò»¸öExternal NetworkµÄSubnet,Õâ¸öÍâÍøÂß¼­ÉÏ´ú±íÁËÎÒÃÇÊý¾ÝÖÐÐĵÄÎïÀíÍøÂ磬ͨ¹ýÕâ¸öÎïÀíÍøÂ磬ÎÒÃÇ¿ÉÒÔ·ÃÎÊÍâÍø¡£Òò¶øPUBLIC_GATEWAYÓ¦¸ÃÉèΪÊý¾ÝÖÐÐÄÀïÃæµÄGateway£¬PUBLCI_RANGEÒ²Ó¦¸ÃºÍÊý¾ÝÖÐÐĵÄÎïÀíÍøÂçµÄCIDRÒ»Ö£¬·ñÔòÁ¬²»Í¨¡£Ö®ËùÒÔÉèÖÃPUBLIC_STARTºÍPUBLIC_END£¬ÊÇÒòΪÔÚÊý¾ÝÖÐÐÄÖУ¬²»¿ÉÄÜËùÓеÄIPµØÖ·¶¼¸øOpenStackʹÓã¬ÁíÍâµÄ¿ÉÄܴÁËVMware Vcenter£¬¿ÉÄÜÓÐÎïÀí»ú£¬ËùÒÔ½ö½ö·ÖÅäÒ»¸öÇø¼ä¸øOpenStackÀ´Óá£

7¡¢½«RouterÁ¬½Óµ½External Network

¾­¹ýÕâ¸öÁ÷³Ì£¬´ÓÐéÄâÍøÂçµ½ÎïÀíÍøÂç¼´Âß¼­ÉÏÁªÍ¨ÁË¡£

´úÂëÁ÷³ÌÈçÏ£º

#!/bin/bash 

TENANT_NAME="openstack"   

TENANT_NETWORK_NAME="openstack-net"   

TENANT_SUBNET_NAME="${TENANT_NETWORK_NAME}-subnet"   

TENANT_ROUTER_NAME="openstack-router"   

FIXED_RANGE="192.168.0.0/24"   

NETWORK_GATEWAY="192.168.0.1"


PUBLIC_GATEWAY="172.24.1.1"  

PUBLIC_RANGE="172.24.1.0/24"   

PUBLIC_START="172.24.1.100"     

PUBLIC_END="172.24.1.200" 

TENANT_ID=$(keystone tenant-list | grep " $TENANT_NAME " | awk '{print $2}')


(1) TENANT_NET_ID=$(neutron net-create --tenant_id $TENANT_ID 
$TENANT_NETWORK_NAME --provider:network_type gre 
--provider:segmentation_id 1 | grep " id " | awk '{print $4}')   

(2) TENANT_SUBNET_ID=$(neutron subnet-create --tenant_id $TENANT_ID 
--ip_version 4 --name $TENANT_SUBNET_NAME $TENANT_NET_ID $FIXED_RANGE 
--gateway $NETWORK_GATEWAY --dns_nameservers list=true 8.8.8.8 | grep " 
id " | awk '{print $4}')  

(3) ROUTER_ID=$(neutron router-create --tenant_id 
$TENANT_ID $TENANT_ROUTER_NAME | grep " id " | awk '{print $4}')

(4) neutron router-interface-add $ROUTER_ID $TENANT_SUBNET_ID

(5) neutron net-create public --router:external=True

(6) neutron subnet-create --ip_version 4 --gateway $PUBLIC_GATEWAY 
public $PUBLIC_RANGE --allocation-pool 
start=$PUBLIC_START,end=$PUBLIC_END --disable-dhcp --name public-subnet

(7) neutron router-gateway-set ${TENANT_ROUTER_NAME} public

ËÄ¡¢GREģʽÏÂÍøÂçϸ½Ú

´´½¨ÍêÍøÂ磬Èç¹û²»´´½¨ÐéÄâ»ú£¬ÎÒÃÇ·¢ÏÖneutronµÄagent»¹ÊÇ×öÁ˺ܶ๤×÷µÄ£¬´´½¨Á˺ܶàÐéÄâÍø¿¨ºÍswitch¡£

ÔÚcompute½ÚµãÉÏ£º

root@ComputeNode:~# ip addr ¡¾ÏÔʾËùÓнӿڵÄIPÐÅÏ¢¡¿

1: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000    
link/ether 08:00:27:49:5c:41 brd ff:ff:ff:ff:ff:ff
inet 172.24.1.124/22 brd 16.158.167.255 scope global eth0
2: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:8e:42:2c brd ff:ff:ff:ff:ff:ff
inet 192.168.56.124/24 brd 192.168.56.255 scope global eth2
3: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:68:92:ce brd ff:ff:ff:ff:ff:ff
inet 10.10.10.124/24 brd 10.10.10.255 scope global eth3
4: br-int: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether d6:2a:96:12:4a:49 brd ff:ff:ff:ff:ff:ff
5: br-tun: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether a2:ee:75:bd:af:4a brd ff:ff:ff:ff:ff:ff
6: qvof5da998c-82: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether c2:7e:50:de:8c:c5 brd ff:ff:ff:ff:ff:ff
7: qvbf5da998c-82: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether c2:33:73:40:8f:e0 brd ff:ff:ff:ff:ff:ff

root@ComputeNode:~# ovs-vsctl show ¡¾²é¿´open vswitchÍøÇÅ¡¿

39f69272-17d4-42bf-9020-eecc9fe8cde6    
Bridge br-int
Port patch-tun
Interface patch-tun
type: patch
options: {peer=patch-int}
Port br-int
Interface br-int
type: internal
Bridge br-tun
Port patch-int
Interface patch-int
type: patch
options: {peer=patch-tun}
Port "gre-1"
Interface "gre-1"
type: gre
options: {in_key=flow, local_ip="10.10.10.124", out_key=flow, remote_ip="10.10.10.121"}
Port br-tun
Interface br-tun
type: internal
ovs_version: "1.10.2"

ÔÚNetwork ½ÚµãÉÏ£º

root@NetworkNode:~# ip addr ¡¾ÏÔʾËùÓнӿڵÄIPÐÅÏ¢¡¿

1: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000    
link/ether 08:00:27:22:8a:7a brd ff:ff:ff:ff:ff:ff
inet 172.24.1.121/22 brd 172.24.1.255 scope global eth0
2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:f1:31:81 brd ff:ff:ff:ff:ff:ff
3: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:56:7b:8a brd ff:ff:ff:ff:ff:ff
inet 192.168.56.121/24 brd 192.168.56.255 scope global eth2
4: eth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 08:00:27:26:bc:84 brd ff:ff:ff:ff:ff:ff
inet 10.10.10.121/24 brd 10.10.10.255 scope global eth3
5: br-ex: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 08:00:27:f1:31:81 brd ff:ff:ff:ff:ff:ff
inet 172.24.1.8/24 brd 172.24.1.255 scope global br-ex
6: br-int: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 22:fe:f1:9b:29:4b brd ff:ff:ff:ff:ff:ff
7: br-tun: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether c6:ea:94:ff:23:41 brd ff:ff:ff:ff:ff:ff

oot@NetworkNode:~# ip netns ¡¾ÁгöÍøÂçÃüÃû¿Õ¼ä¡¿

qrouter-b2510953-1ae4-4296-a628-1680735545ac    
qdhcp-96abd26b-0a2f-448b-b92c-4c98b8df120b

oot@NetworkNode:~# ip netns exec qrouter-b2510953-1ae4-4296-a628-1680735545ac ip addr ¡¾ÀûÓÃÍøÂçÃüÃû¿Õ¼ä½øÐвÙ×÷¡¿

8: qg-97040ca3-2c: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN     
link/ether fa:16:3e:26:57:e3 brd ff:ff:ff:ff:ff:ff
inet 172.24.1.100/24 brd 172.24.1.255 scope global qg-97040ca3-2c
11: qr-e8b97930-ac: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether fa:16:3e:43:ef:16 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.1/24 brd 192.168.0.255 scope global qr-e8b97930-ac

root@NetworkNode:~# ip netns exec qdhcp-96abd26b-0a2f-448b-b92c-4c98b8df120b ip addr ¡¾ÀûÓÃÍøÂçÃüÃû¿Õ¼ä½øÐвÙ×÷¡¿

9: tapde5739e1-95: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN     
link/ether fa:16:3e:19:8c:67 brd ff:ff:ff:ff:ff:ff
inet 192.168.0.2/24 brd 192.168.0.255 scope global tapde5739e1-95
inet 169.254.169.254/16 brd 169.254.255.255 scope global tapde5739e1-95

root@NetworkNode:~# ovs-vsctl show ¡¾²é¿´open vswitchµÄÍøÂç״̬¡¿

d5d5847e-1c9e-4770-a68c-7a695b7b95cd    
Bridge br-ex
Port "qg-97040ca3-2c"
Interface "qg-97040ca3-2c"
type: internal
Port "eth1"
Interface "eth1"
Port br-ex
Interface br-ex
type: internal
Bridge br-int
Port patch-tun
Interface patch-tun
type: patch
options: {peer=patch-int}
Port "tapde5739e1-95"
tag: 1
Interface "tapde5739e1-95"
type: internal
Port br-int
Interface br-int
type: internal
Port "qr-e8b97930-ac"
tag: 1
Interface "qr-e8b97930-ac"
type: internal
Bridge br-tun
Port patch-int
Interface patch-int
type: patch
options: {peer=patch-tun}
Port "gre-2"
Interface "gre-2"
type: gre
options: {in_key=flow, local_ip="10.10.10.121", out_key=flow, remote_ip="10.10.10.124"}
Port br-tun
Interface br-tun
type: internal
ovs_version: "1.10.2"

ÕâʱÈç¹ûÎÒÃÇÔÚÕâ¸öÍøÂçÀï´´½¨Ò»¸öÐéÄâ»ú£¬ÔÚCompute Node¶àÁËÏÂÃæµÄÍø¿¨£º

13: qvof5da998c-82: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000   
link/ether c2:7e:50:de:8c:c5 brd ff:ff:ff:ff:ff:ff
14: qvbf5da998c-82: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether c2:33:73:40:8f:e0 brd ff:ff:ff:ff:ff:ff
15: qbr591d8cc4-df: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
link/ether f2:d9:f0:d5:48:c8 brd ff:ff:ff:ff:ff:ff
16: qvo591d8cc4-df: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether e2:58:d4:dc:b5:16 brd ff:ff:ff:ff:ff:ff
17:
qvb591d8cc4-df: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu
1500 qdisc pfifo_fast master qbr591d8cc4-df state UP qlen 1000
link/ether f2:d9:f0:d5:48:c8 brd ff:ff:ff:ff:ff:ff
18:
tap591d8cc4-df: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc
pfifo_fast master qbr591d8cc4-df state UNKNOWN qlen 500
link/ether fe:16:3e:6e:ba:d0 brd ff:ff:ff:ff:ff:ff

Èç¹ûÎÒÃǰ´ÕÕovs-vsctl showµÄÍø¿¨ÇŽӹØÏµ£¬±ã¿ÉÒÔ»­³öÏÂÃæµÄͼ

ͼ3£ºGREÍøÂç

GREÍøÂçÔ­Àí£º

¼ÙÉèÐéÄâ»úVM0Íø¿¨eth0ÓÐÍøÂçÊý¾Ý°üÏòÍâÍø·¢ËÍ£¬ÄÇôÊý¾Ý»áÒÀ´Î¾­¹ýqbr Linux BridgeÉ豸£¬qvbºÍqvoÐéÄâÍøÂçÉ豸£¬µ½´ïOVSÍøÇÅbr-intÉÏ£¬br-int½«Êý¾Ý°üattachµ½OVSÍøÇÅbr-tunÉÏ£¬Êý¾Ý°üÔÙ´Ócompute½ÚµãOVSÍøÇŵÄbr-tunºÍnetwork½ÚµãOVSÍøÇÅbr-tun¹¹³ÉµÄGREËíµÀ´©¹ý£¬½»¸¶µ½Network½ÚµãµÄOVSÍøÇÅbr-intÉÏ£»ÍøÂç½ÚµãµÄbr-intͨ¹ýqrÉ豸½èÖúLinuxÃüÃû¿Õ¼äqrouterÁ¬Í¨µ½br-exÉϵÄqgÉ豸£¬½«Êý¾Ý°ü½»¸¶µ½OVSÍøÇÅbr-exÉÏ£¬×îºóbr-exͨ¹ýÍøÂç½ÚµãµÄÍⲿÎäÁ¦¶Ë¿Úeth1°ÑÊý¾Ý°ü´«Ë͵½Íⲿ·ÓÉÆ÷µÄÍø¹Ø¡£

Î塢ͨ¹ýÀý×ÓÀí½âGREÍøÂç

openstackΪʲôҪ´´½¨Õâô¶àµÄÐéÄâÍø¿¨£¿

ÕâÐ©Íø¿¨¿´ÆðÀ´¸´ÔÓ£¬È´ÊǸ÷ÓÐÓô¦£¬ÕâÖÖÐéÄâÍøÂçÍØÆË£¬ÕýÊÇÎÒÃǾ­³£Ê¹ÓõÄÎïÀíÍøÂçµÄÍØÆË½á¹¹¡£

ÏÂÃæÍ¨¹ýÒ»¸ö·Ç³£ÈÝÒ×Àí½âµÄÀý×ÓÀ´Öð²½·ÖÎögreÍøÂç¡£

ÎÒÃÇÏÈÀ´»Øµ½Ò»¸ö×î×îÊìϤ²»¹ýµÄ³¡¾°£¬ÎÒÃǵĴóѧÇÞÊÒ£¬µ±Ê±ÎÒÃÇ»¹Âò²»Æð·ÓÉÆ÷£¬ËùÒÔÒ»°ã²ÉÈ¡µÄ·½·¨ÈçÏÂͼËùʾ£º

ÇÞÊÒ³¤µÄ»úÆ÷ÉÏŪÁ½ÕÅÍø¿¨£¬ÇÞÊÒÂòÒ»¸öHUB£¬ÆäËûÈ˵ĵçÄÔ¶¼½Óµ½HUBÉÏ£¬ÇÞÊÒ³¤µÄµçÄÔµÄÁ½ÕÅÍø¿¨Ò»ÕŶÔÍâÁ¬½ÓÍøÂ磬һÕŶÔÄÚÁ¬½ÓHUB¡£ÇÞÊÒ³¤µÄµçÄÔÆäʵ³äµ±µÄ±ãÊÇ·ÓÉÆ÷µÄ×÷Óá£

ºóÀ´Ìõ¼þºÃÁË£¬Â·ÓÉÆ÷Ò²±ãÒËÁË£¬ËùÒԺܶà¼ÒÍ¥Ò²ÊÇÀàËÆµÄÍØÆË½á¹¹£¬Ö»²»¹ý½«Computer1ºÍswitchºÏÆðÀ´£¬±ä³ÉÁËÒ»¸ö·ÓÉÆ÷£¬Â·ÓÉÆ÷Ò²ÊÇÓжà¸ö¿ÚÒ»¸öÁ¬½ÓWLAN£¬Ò»¸öÁ¬½ÓLAN¡£

ͼ4

ÏÖÔÚÎÒÃÇÏëÏóÒ»¸öÇÞÊÒ±ä³ÉÁËһ̨Hypervisor£¬ËùÓеĵçÄÔ¶¼±ä³ÉÁËÐéÄâ»ú£¬¾Í±ä³ÉÁËÏÂÃæµÄÑù×Ó£º

ͼ5£ºµ¥½ÚµãµÄopenstackµÄÍøÂç½á¹¹

ÎÒÃÇÏȺöÂÔqbrºÍDHCP Server£¬ÒÔ¼°namespace¡£

br-int¾ÍÊÇÇÞÊÒÀïµÄHUB£¬ËùÓÐÐéÄâ»ú¶¼»áÁ¬½Óµ½Õâ¸öswitchÉÏ£¬ÐéÄâ»úÖ®¼äµÄÏ໥ͨОÍÊÇͨ¹ýbr-intÀ´µÄ¡£

Router¾ÍÊÇÇÞÊÒ³¤µÄµçÄÔ£¬Ò»±ßÁ¬½ÓÔÚbr-intÉÏ£¬Ò»±ßÁ¬½ÓÔÚ¶ÔÍâµÄÍø¿ÚÉÏ£¬br-ex/eth0ÍâÃæ¾ÍÊÇÎÒÃǵÄÎïÀíÍøÂç¡£

ͼ5Æäʵ¾ÍÊǵ¥½ÚµãµÄopenstackµÄÍøÂç½á¹¹£¬ËäÈ»¸´ÔÓ£¬µ«ÊǾÍÊǰÑÎÒÃǼÒÀïµÄ£¬»òÕßÇÞÊÒÀïÃæµÄÎïÀí»ú°áµ½Ò»¸öHypervisorÉÏÁË£¬Æä½á¹¹¾Í²»ÄÑÀí½âÁË¡£

µ±È»µ¥½ÚµãµÄopenstack²»¹ýÊǸö²âÊÔ»·¾³£¬compute½ÚµãºÍnetwork½ÚµãÒ²ÊÇÒª·Ö¿ªµÄ£¬Èçͼ3£¬Ã¿¸ö»úÆ÷É϶¼ÓÐÁË×Ô¼ºµÄbr-int¡£

Áù¡¢GREÍøÂçÔ­Àí½øÒ»²½Àí½â

ÒÔÏÂÄÚÈݿɶԱÈͼ3À´Àí½â

£¨1£©DHCP

Ϊʲô»áÓиöDHCP ServerÄØ£¬ÊÇͬһ¸öprivate networkÀïµÄÐéÄâ»úµÃµ½IP¶¼ÊÇͨ¹ýÕâ¸öDHCP ServerÀ´µÄ£¬Õâ¸öDHCP ServerÒ²ÊÇÁ¬½Óµ½br-intÉϺÍÐéÄâ»ú½øÐÐͨÐŵġ£

£¨2£©qbr

¼ÈÈ»qbrºÍbr-int¶¼ÊÇÍøÇÅ£¬ÎªÊ²Ã´²»Ö±½ÓÁ¬µ½br-int£¬»¹ÒªÍ¨¹ýqbr,qvb,qvoÆñ²»ÊǶàÓ࣬Ϊʲô»áÓÐqbrÄØ£¿ÕâÊǺÍsecurity groupµÄ¸ÅÄîÓйء£¼òµ¥Ëµ¾ÍÊÇOVSÍøÇÅbr-intûÓÐÉèÖÃiptables¹æÔòµÄ¹¦ÄÜ£¬µ«openstackÓÖÒªÌṩ°²È«×é·þÎñ£¬¾Í½èÖúÁËLinux bridge(qbr)µÄ¹¦ÄÜ£¬ËäÈ»OVSµÄbr-intºÍlinux bridge (qbr)¶¼ÊǶþ²ãÍøÇÅ£¬µ«ÊÇΪÁ˹¦ÄÜ»¥²¹¾Íͬʱ³öÏÖÁË¡£¾ßÌåÁ˽⣬openstackÖеÄsecurity group¿ªÍ¨ÄÄЩ¶Ë¿Ú£¬ÆÁ±ÎÄÄЩ¶Ë¿ÚÊÇÓÃiptablesÀ´ÊµÏֵģ¬È»¶øbr-intÕâЩÐéÄâbridge¶¼ÊÇopenvswitch´´½¨µÄ£¬openstackµÄKernel modeºÍnetfilterµÄkernel mode²»¼æÈÝ¡£Ò»¸öIP°ü½øÀ´ÒªÃ´×ßiptables¹æÔò½øÐд¦Àí£¬ÒªÃ´×ßopenvswitchµÄ¹æÔò½øÐд¦Àí£¬br-intÉÏÓкܶàopenvswitchµÄ¹æÔò£¬±ÈÈçvlan tagµÈ£¬ËùÒÔiptables±ØÐëÒªÁíÍ⽨Á¢Ò»¸ölinux bridge£¨qbr£©À´×ö£¬Òò¶ø¾ÍÓÐÁËqbr£¬ÔÚÁ˽âÍØÆË½á¹¹µÄʱºò£¬¿ÉÒÔ½«qbrºöÂÔ£¬¿´µ½VMÖ±½ÓÁ¬½Óµ½br-intÉϾͿÉÒÔÁË¡£

£¨3£©namespace

Ϊʲô»áÓÐnamespaceÄØ£¬javaµÄnamespaceÊÇΪÁËÔÚ²»Í¬namespaceÏÂÓÐÏàͬÀàÃû,openstackÒ²Ïë×öµ½ÕâÒ»µã¡£²»Í¬Tenant¶¼´´½¨×Ô¼ºµÄrouterºÍprivate network£¬±Ë´Ë²»ÖªµÀ±ðÈËÖ¸¶¨ÁËÄÄÐ©Íø¶Î£¬ºÜÓпÉÄÜÁ½¸ötenant¶¼Ö¸¶¨ÁË192.168.0.0/24,ÕâÑù²»Í¬µÄprivate networkµÄ·ÓÉ±í£¬DHCP Server¾ÍÐèÒª¸ôÀ룬²»È»¾ÍÂÒÁË£¬Òò¶ø¾ÍÓÐÁËnamespace¡£

£¨4£©OVSÒ»Ìå»¯ÍøÇÅbr-int

ÿ¸ö»úÆ÷É϶¼ÓÐÁË×Ô¼ºµÄbr-int£¬µ«ÊǶÔÓÚÐéÄâ»úºÍÐéÄârouterÀ´Ëµ£¬ËüÃÇÈÔÈ»¾õµÃ×Ô¼ºÁ¬½Óµ½ÁËÒ»¸ö´óµÄL2µÄbr-intÉÏ£¬Í¨¹ýÕâ¸öbr-intÏ໥ͨÐŵģ¬ËüÃǸÐÊܲ»µ½br-intÏÂÃæµÄÐéÄâÍø¿¨br-tun¡£ËùÒÔ¶ÔÓÚ¶à½Úµã½á¹¹£¬ÎÒÃÇ¿ÉÒÔÏëÏóbr-intÊÇÒ»¸ö´óµÄ£¬ºá¿çËùÓÐcomputeºÍnetwork½ÚµãµÄ¶þ²ãswitch£¬ÐéÄâ»úÖ®¼äµÄͨÐÅÒÔ¼°ÐéÄâ»úºÍRouterµÄͨÐÅ£¬¾ÍÏñÔÚÒ»¸öÇÞÊÒÒ»ÑùµÄ¡£ÕâÊÇÒ»ÖÖºÜÖØÒªµÄ³éÏó˼ά£¬ºÃÏñopenstack»·¾³ÖÐËùÓÐÐéÄâ»ú¶¼Á¬½Óµ½ÁËÒ»¸ö¾ÞÐ͵ÄÐéÄâ½»»»»úÉÏ¡£

È»¶øbr-int±Ï¾¹±»ÎïÀíµÄ¸î¿ªÁË£¬ÐèÒªÓÐÒ»ÖÖ·½Ê½½«ËûÃÇ´®ÁªÆðÀ´£¬openstackÌṩÁ˶àÖÖ·½Ê½£¬¿ÉÒÔÓÃGRE tunnel½«²»Í¬»úÆ÷µÄbr-intÁ¬½ÓÆðÀ´£¬Ò²¿ÉÒÔͨ¹ýVLAN½«br-intÁ¬½ÓÆðÀ´£¬µ±È»»¹¿ÉÒÔʹÓÃvxlan¡£

Õâ¾ÍÊÇΪʲôopenstackÓÐÁËbr-intÕâ¸öbridge£¬µ«ÊDz»°ÑËùÓеÄopenvswitchµÄ¹æÔò¶¼ÔÚËüÉÏÃæÊµÏÖ¡£¾ÍÊÇΪÁËÌṩÕâÖÖÁé»îÐÔ£¬¶ÔÓÚÐéÄâ»úÀ´½²£¬¿´µ½µÄÊÇÒ»´óÕû¸öbr-int£¬²»Í¬»úÆ÷µÄbr-int¿ÉÒÔÓжàÖÖ·½Ê½Á¬½Ó£¬ÕâÔÚbr-intÏÂÃæµÄÍø¿¨ÉÏÃæÊµÏÖ¡£

£¨5£©OVSͨµÀÍøÇÅbr-tun

br-tunÒ²ÊÇOVS´´½¨µÄÐéÄâÍøÇÅ£¬ËüÊÇÒ»¸öÖмä²ã£¬½ÓÊÕbr-intµÄÍøÂçÊý¾Ý£¬È»ºóÔÚͨ¹ýÌØ¶¨ÍøÂçЭÒéÓë¸÷¸ö½ÚµãµÄbr-tunÏàÁ¬¹¹³ÉÒ»¸öͨµÀ²ã¡£Èç¹ûËùÓеÄbr-int¹¹³ÉµÄ³éÏó²ã¶¨ÒåΪÐéÄâ¶þ²ãÍøÂ磬ÄÇôËùÓеÄbr-tun¹¹³ÉµÄ³éÏó²ã±ßÉÏÐéÄâÈý²ãÍøÂçÁË¡£

£¨6£©ÍøÂçÊý¾Ý°ü¸ôÀë

Èç¹ûÓв»Í¬µÄTenant£¬´´½¨Á˲»Í¬µÄprivate network£¬ÎªÁËÔÚdata networkÉ϶԰ü½øÐиôÀ룬´´½¨private networkµÄʱºò£¬ÐèÒªÖ¸¶¨vlanid»òÕßsegmentid¡£

´Óovs-vsctl showÎÒÃÇ¿ÉÒÔ¿´µ½£¬²»Í¬µÄtenantµÄprivate networkÉÏ´´½¨µÄÐéÄâ»ú£¬Á¬½Óµ½br-intÉϵÄʱºòÊÇ´øtagµÄ£¬ËùÒÔ²»Í¬tenantµÄÐéÄâ»ú£¬¼´±ãÁ¬½Óµ½Í¬Ò»¸öbr-intÉÏ£¬ÒòΪtag²»Í¬£¬Ò²ÊDz»ÄÜÏ໥ͨÐŵġ£È»¶øÍ¬Ò»¸ö»úÆ÷ÉϵÄtagµÄ¼ÆÊýÊǽöÔÚ±¾»úÓÐЧµÄ£¬²¢²»Ê¹ÓÃÎÒÃÇ´´½¨private networkµÄʱºòÖ¸¶¨µÄÈ«¾ÖΨһµÄvlanid»òÕßsegmentid£¬Ò»¸öcompute½ÚµãÉϵÄbr-intÉϵÄtag 1ºÍÁíһ̨compute½ÚµãÉϵÄbr-intµÄtag1ºÜ¿ÉÄÜÊÇÁ½ÂëÊ¡£È«¾ÖµÄvlanidºÍsegmentid½ö½öÔÚbr-intÒÔϵÄÐéÄâÍø¿¨ºÍÎïÀíÍøÂçÖÐʹÓã¬ÐéÄâ»úËùÓÐÄÜ¿´µ½µÄ¶«Î÷£¬µ½br-intΪֹ£¬¿´²»µ½´òͨbr-intËùҪʹÓõÄvlanidºÍsegmentid¡£

´Ó¾Ö²¿ÓÐЧµÄtagingµ½È«¾ÖÓÐЧµÄvlanid»òÕßsegmentidµÄת»»£¬¶¼ÊÇͨ¹ýopenvswitchµÄ¹æÔò£¬ÔÚbr-tun»òÕßbr-eth1ÉÏʵÏÖ¡£

   
 
Ïà¹ØÎÄÕÂ

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

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

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
ÔÆ¼ÆËãÓ¦ÓÃÓ뿪·¢
CMMIÌåϵÓëʵ¼ù
»ùÓÚCMMI±ê×¼µÄÈí¼þÖÊÁ¿±£Ö¤
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

ר¼ÒÊӽǿ´ITÓë¼Ü¹¹
Èí¼þ¼Ü¹¹Éè¼Æ
ÃæÏò·þÎñÌåϵ¼Ü¹¹ºÍÒµÎñ×é¼þµÄ˼¿¼
ÈËÈËÍøÒÆ¶¯¿ª·¢¼Ü¹¹
¼Ü¹¹¸¯»¯Ö®ÃÕ
̸ƽ̨¼´·þÎñPaaS
Ïà¹ØÅàѵ¿Î³Ì

ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ
Windows Azure ÔÆ¼ÆËãÓ¦ÓÃ

ĦÍÐÂÞÀ­ ÔÆÆ½Ì¨µÄ¹¹½¨ÓëÓ¦ÓÃ
ͨÓù«Ë¾GE DockerÔ­ÀíÓëʵ¼ù
ijÑз¢ÖÐÐÄ Openstackʵ¼ù
ÖªÃûµç×Ó¹«Ë¾ ÔÆÆ½Ì¨¼Ü¹¹ÓëÓ¦ÓÃ
ijµçÁ¦ÐÐÒµ »ùÓÚÔÆÆ½Ì¨¹¹½¨ÔÆ·þÎñ
ÔÆ¼ÆËãÓëWindows AzureÅàѵ
±±¾© ÔÆ¼ÆËãÔ­ÀíÓëÓ¦ÓÃ