SlideShare a Scribd company logo
OpenStack Networking--
Neutron
Internal Training
Haven(Yan Haifeng)/ Oct 17, 2015
Software Engineer
Blog http://yanheven.github.io/
1
2
3
Router, Network, Subnet and Port
Related Linux Technology
Linux NameSpace
1
Neutron Agenda
2
5 Security Group
4 Iptables usage in Neutron
1, Entities in Neutron
3
1, Entities in Neutron
‱ Network隔犻的 L2 ćŸŸïŒŒćŻä»„æ˜Żè™šæ‹Ÿă€é€»èŸ‘æˆ–äș€æąïŒŒćŒäž€äžȘ眑络䞭的䞻æœșćœŒæ­€ L2 ćŻè§ă€‚
‱ External Network
– arping 10.0.1.2
‱ Subnet隔犻的 L3 ćŸŸïŒŒIP ćœ°ć€ć—ă€‚ć…¶äž­æŻäžȘæœșć™šæœ‰äž€äžȘ IPïŒŒćŒäž€äžȘć­çœ‘çš„äž»æœșćœŒæ­€ L3 ćŻè§ă€‚
– ping 10.0.1.2
– ping 10.0.0.7
‱ PortïŒšçœ‘ç»œäžŠè™šæ‹Ÿă€é€»èŸ‘æˆ–äș€æąç«ŻćŁă€‚ æ‰€æœ‰èż™äș›ćźžäœ“éƒœæ˜Żè™šæ‹Ÿçš„ïŒŒæ‹„有è‡ȘćŠšç”Ÿæˆçš„ć”Żäž€æ ‡ç€șid
æ”ŻæŒCRUDćŠŸèƒœïŒŒćč¶ćœšæ•°æźćș“äž­è·ŸèžȘèź°ćœ•çŠ¶æ€ă€‚
‱ Fixed ip
‱ Floating ip
‱ Router : è™šæ‹Ÿè·Żç”±ć™šïŒŒç”šäșŽèź©äž€äžȘäžćŒçš„äž‰ć±‚çœ‘ç»œé€šäżĄă€‚
– Ping 10.2.0.3
4
5
2, Linux Networking Technology
2, Linux Networking Technology
‱ bridgeïŒšçœ‘æĄ„ïŒŒLinux侭甹äșŽèĄšç€ș侀äžȘèƒœèżžæŽ„äžćŒçœ‘ç»œèźŸć€‡çš„è™šæ‹ŸèźŸć€‡ïŒŒlinuxäž­äŒ ç»ŸćźžçŽ°çš„çœ‘æĄ„
ç±» 䌌䞀äžȘhub èźŸć€‡ïŒŒè€ŒovsçźĄç†çš„çœ‘æĄ„äž€èˆŹç±»äŒŒäș€æąæœș。
– sudo ovs-vsctl show
– sudo ovs-vsctl list-br
‱ br-intbridge-integrationïŒŒç»Œćˆçœ‘æĄ„ïŒŒćžžç”šäșŽèĄšç€șćźžçŽ°äž»èŠć†…éƒšçœ‘ç»œćŠŸèƒœçš„çœ‘æĄ„ă€‚
‱ br-exbridge-externalïŒŒć€–éƒšçœ‘æĄ„ïŒŒé€šćžžèĄšç€șèŽŸèŽŁè·Ÿć€–éƒšçœ‘ç»œé€šäżĄçš„çœ‘æĄ„ă€‚
‱ GREGeneral Routing EncapsulationïŒŒäž€ç§é€šèż‡ć°èŁ…æ„ćźžçŽ°éš§é“çš„æ–čćŒă€‚ćœšopenstackäž­äž€èˆŹ
æ˜ŻćŸș äșŽL3的greïŒŒćłoriginal pkt/GRE/IP/Ethernet
‱ VETH虚拟ethernetæŽ„ćŁïŒŒé€šćžžä»„pair的æ–čćŒć‡șçŽ°ïŒŒäž€ç«Żć‘ć‡șçš„çœ‘ćŒ…ïŒŒäŒšèą«ćŠäž€ç«ŻæŽ„æ”¶ïŒŒćŻä»„ćœą
成 䞀äžȘçœ‘æĄ„äč‹é—Žçš„通道。
6
2, Linux Networking Technology
‱ qvbneutron veth, Linux Bridge-side
– bridge link
‱ qvoneutron veth, OVS-side
– sudo ovs-vsctl show
‱ TAPèźŸć€‡ïŒšæšĄæ‹Ÿäž€äžȘäșŒć±‚çš„çœ‘ç»œèźŸć€‡ïŒŒćŻä»„æŽ„ć—ć’Œć‘é€äșŒć±‚çœ‘ćŒ…ă€‚
– bridge link
‱ TUNèźŸć€‡ïŒšæšĄæ‹Ÿäž€äžȘäž‰ć±‚çš„çœ‘ç»œèźŸć€‡ïŒŒćŻä»„æŽ„ć—ć’Œć‘é€äž‰ć±‚çœ‘ćŒ…ă€‚
– ip tuntap
‱ iptablesLinux äžŠćžžè§çš„ćźžçŽ°ćź‰ć…šç­–ç•„çš„é˜Čç«ćą™èœŻä»¶ă€‚
‱ Vlan虚拟 LanïŒŒćŒäž€äžȘ物理 Lan äž‹ç”šæ ‡ç­ŸćźžçŽ°éš”çŠ»ïŒŒćŻç”šæ ‡ć·äžș1-4094。
‱ VXLANïŒšäž€ć„—ćˆ©ç”š UDP ćèźźäœœäžșćș•ć±‚äŒ èŸ“ćèźźçš„ Overlay ćźžçŽ°ă€‚äž€èˆŹèź€äžș䜜äžș VLan æŠ€æœŻçš„ć»¶
䌞或 æ›żä»Łè€…ă€‚
‱ namespaceïŒšç”šæ„ćźžçŽ°éš”çŠ»çš„äž€ć„—æœșćˆ¶ïŒŒäžćŒ namespace 䞭的蔄æșäč‹é—ŽćœŒæ­€äžćŻè§ă€‚
– ip netns
7
3, Linux NameSpace
8
3, Linux NameSpace
9
‱ 朹 Linux äž­ïŒŒçœ‘ç»œćć­—ç©șé—ŽćŻä»„èą«èź€äžșæ˜Żéš”çŠ»çš„æ‹„æœ‰ć•ç‹Źçœ‘ç»œæ ˆïŒˆçœ‘ćĄă€è·Żç”±èœŹć‘èĄšă€iptablesïŒ‰çš„çŽŻćąƒă€‚
çœ‘ç»œćć­—ç©șé—Žç»ćžžç”šæ„éš”çŠ»çœ‘ç»œèźŸć€‡ć’ŒæœćŠĄïŒŒćȘæœ‰æ‹„æœ‰ćŒæ ·çœ‘ç»œćć­—ç©șé—Žçš„èźŸć€‡ïŒŒæ‰èƒœçœ‹ćˆ°ćœŒæ­€ă€‚
‱ ćŻä»„ç”šip netns ć‘œä»€æ„æŸ„çœ‹ć·Čç»ć­˜ćœšçš„ćć­—ç©ș问, ㊠execćŻä»„æ‰§èĄŒć„ç§çœ‘ç»œç›žć…łć‘œä»€ïŒŒçœ‘ç»œæŽ’æŸ„é”™èŻŻæ—¶ç»ćžž
ç”šćˆ°ïŒŒćŻä»„ç›ŽæŽ„èżžæŽ„ćˆ°VM。
– Ping, route, ssh, tcpdump, arping, etc.
evan@devstack:~$ ip netns
qdhcp-8709f095-72c6-400e-ad68-6a413ab4d936
qrouter-b58c06ea-02ef-4066-bb8d-0d6ba1df29d9
qdhcp-27fb6448-5708-4054-a1ad-c3ba94069fe6
evan@devstack:~$ sudo ip netns exec qrouter-b58c06ea-02ef-4066-bb8d-0d6ba1df29d9 ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT
group default
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
8: qg-60277fd9-b3: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
mode DEFAULT group default
9: qr-023f7722-39: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
mode DEFAULT group default
link/ether fa:16:3e:b2:3a:e0 brd ff:ff:ff:ff:ff:ff
3, Linux NameSpace
10
‱ DHCP æœćŠĄ
– dhcpæœćŠĄæ˜Żé€šèż‡dnsmasqèż›çš‹ïŒˆèœ»é‡çș§æœćŠĄć™šïŒŒćŻä»„提䟛dns、dhcp、tftpç­‰æœćŠĄïŒ‰æ„ćźžçŽ°çš„ïŒŒèŻ„èż›çš‹ç»‘ćźšćˆ°dhcp損歗ç©ș问侭的
br-intçš„æŽ„ćŁäžŠă€‚ćŻä»„æŸ„çœ‹ç›žć…łçš„èż›çš‹ă€‚
‱ è·Żç”±èœŹć‘æœćŠĄ
– routeræ˜ŻæäŸ›è·š subnet 的äș’è”ćŠŸèƒœçš„ă€‚æŻ”ćŠ‚ç”šæˆ·çš„ć†…éƒšçœ‘ç»œäž­äž»æœșæƒłèŠèźżé—źć€–éƒšäș’è”çœ‘çš„ćœ°ć€ïŒŒć°±éœ€èЁrouteræ„èœŹć‘ïŒˆć› æ­€ïŒŒ
æ‰€æœ‰è·Ÿć€–éƒšçœ‘ç»œçš„æ”é‡éƒœćż…éĄ»ç»èż‡routerïŒ‰ă€‚ç›źć‰routerçš„ćźžçŽ°æ˜Żé€šèż‡iptablesèż›èĄŒçš„ă€‚
– ćŒæ ·çš„ïŒŒrouteræœćŠĄäčŸèżèĄŒćœšè‡Șć·±çš„ćć­—ç©ș闎䞭
evan@devstack:~$ ip netns
qdhcp-8709f095-72c6-400e-ad68-6a413ab4d936
qrouter-b58c06ea-02ef-4066-bb8d-0d6ba1df29d9
qdhcp-27fb6448-5708-4054-a1ad-c3ba94069fe6
evan@devstack:~$ ps -ef | grep 8709f095-72c6-400e-ad68-6a413ab4d936
evan@devstack:~$ sudo ip netns exec qrouter-b58c06ea-02ef-4066-bb8d-0d6ba1df29d9
iptables -t nat -S
4, Iptables
11
‱ ćœšæ•°æźć€„ç†èż‡çš‹äž­ïŒŒâ€œæ ˆâ€æšĄćŒćș•求æœșćˆ¶ïŒš
4, Iptables
12
‱ Netfilteræ˜ŻLinux 2.4.xćŒ•ć…„çš„äž€äžȘć­çł»ç»ŸïŒŒćźƒäœœäžș侀äžȘé€šç”šçš„ă€æŠœè±Ąçš„æĄ†æž¶ïŒŒæäŸ›äž€æ•Žć„—çš„hookć‡œæ•°çš„
缡理æœșćˆ¶ïŒŒäœżćŸ—èŻžćŠ‚æ•°æźćŒ…èż‡æ»€ă€çœ‘ç»œćœ°ć€èœŹæą(NAT)撌ćŸșäșŽćèźźç±»ćž‹çš„èżžæŽ„跟èžȘ成äžșäș†ćŻèƒœ
4, Iptables
13
‱ ć‚è€ƒ http://blog.chinaunix.net/uid-23069658-id-3160506.html
‱ iptablesćȘæ˜ŻLinuxé˜Čç«ćą™çš„çźĄç†ć·„ć…·è€Œć·Č䜍äșŽ/sbin/iptablesă€‚çœŸæ­ŁćźžçŽ°é˜Čç«ćą™ćŠŸèƒœçš„æ˜ŻnetfilterïŒŒćźƒæ˜Ż
Linuxć†…æ žäž­ćźžçŽ°ćŒ…èż‡æ»€çš„ć†…éƒšç»“æž„ă€‚
‱ 慳äșŽćèźźæ ˆé‚Łäș”äžȘ慳锼ç‚č“ABCDE”Netfilter朹netfilter_ipv4.häž­ć°†èż™äžȘäș”äžȘç‚čçš„ć‘œć
4, Iptables
14
‱ Iptables çš„ć€„ç†é€»èŸ‘
4, Iptables
15
‱ Iptables ç»„æˆéƒšćˆ†
‱ ć‚è€ƒ http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646466.html
4, Iptables rules for NAT
16
‱ Iptables 朹Router䞭的䜜甚evan@devstack:~$ sudo ip netns exec qrouter-b58c06ea-02ef-4066-bb8d-0d6ba1df29d9 iptables -t
nat -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-N neutron-postrouting-bottom
-N neutron-vpn-agen-OUTPUT
-N neutron-vpn-agen-POSTROUTING
-N neutron-vpn-agen-PREROUTING
-N neutron-vpn-agen-float-snat
-N neutron-vpn-agen-snat
-A PREROUTING -j neutron-vpn-agen-PREROUTING
-A OUTPUT -j neutron-vpn-agen-OUTPUT
-A POSTROUTING -j neutron-vpn-agen-POSTROUTING
-A POSTROUTING -j neutron-postrouting-bottom
-A neutron-postrouting-bottom -m comment --comment "Perform source NAT on outgoing traffic." -j
neutron-vpn-agen-snat
-A neutron-vpn-agen-OUTPUT -d 192.168.1.4/32 -j DNAT --to-destination 10.0.0.6
-A neutron-vpn-agen-POSTROUTING ! -i qg-60277fd9-b3 ! -o qg-60277fd9-b3 -m conntrack ! --
ctstate DNAT -j ACCEPT
-A neutron-vpn-agen-PREROUTING -d 192.168.1.4/32 -j DNAT --to-destination 10.0.0.6
-A neutron-vpn-agen-PREROUTING -d 169.254.169.254/32 -i qr-+ -p tcp -m tcp --dport 80 -j
REDIRECT --to-ports 9697
-A neutron-vpn-agen-float-snat -s 10.0.0.6/32 -j SNAT --to-source 192.168.1.4
-A neutron-vpn-agen-snat -j neutron-vpn-agen-float-snat
-A neutron-vpn-agen-snat -o qg-60277fd9-b3 -j SNAT --to-source 192.168.0.200
-A neutron-vpn-agen-snat -m mark ! --mark 0x2/0xffff -m conntrack --ctstate DNAT -j SNAT --to-
4, Security Groupfilter table
17
4, Security Group: filter table
18
‱ INPUT chain
– DHCP traffic allow
– IP/MAC pair allow
19
evan@devstack:~$ sudo iptables -t filter -S INPUT
-P INPUT ACCEPT
-A INPUT -j neutron-openvswi-INPUT
-A INPUT -j nova-api-INPUT
evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-INPUT
-N neutron-openvswi-INPUT
-A neutron-openvswi-INPUT -m physdev --physdev-in tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Direct incoming
traffic from VM to the security group chain." -j neutron-openvswi-o48cd91af-b
-A neutron-openvswi-INPUT -m physdev --physdev-in tap4c44aad9-49 --physdev-is-bridged -m comment --comment "Direct incoming
traffic from VM to the security group chain." -j neutron-openvswi-o4c44aad9-4
-A neutron-openvswi-INPUT -m physdev --physdev-in tapc2702f4f-c6 --physdev-is-bridged -m comment --comment "Direct incoming
traffic from VM to the security group chain." -j neutron-openvswi-oc2702f4f-c
-A neutron-openvswi-INPUT -m physdev --physdev-in tap020fc191-56 --physdev-is-bridged -m comment --comment "Direct incoming
traffic from VM to the security group chain." -j neutron-openvswi-o020fc191-5
evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-o48cd91af-b
-N neutron-openvswi-o48cd91af-b
-A neutron-openvswi-o48cd91af-b -p udp -m udp --sport 68 --dport 67 -m comment --comment "Allow DHCP client traffic." -j RETURN
-A neutron-openvswi-o48cd91af-b -j neutron-openvswi-s48cd91af-b
-A neutron-openvswi-o48cd91af-b -p udp -m udp --sport 67 --dport 68 -m comment --comment "Prevent DHCP Spoofing by VM." -j
DROP
-A neutron-openvswi-o48cd91af-b -m state --state INVALID -m comment --comment "Drop packets that appear related to an existing
connection (e.g. TCP ACK/FIN) but do not have an entry in conntrack." -j DROP
-A neutron-openvswi-o48cd91af-b -m state --state RELATED,ESTABLISHED -m comment --comment "Direct packets associated with
a known session to the RETURN chain." -j RETURN
-A neutron-openvswi-o48cd91af-b -j RETURN
-A neutron-openvswi-o48cd91af-b -m comment --comment "Send unmatched traffic to the fallback chain." -j neutron-openvswi-sg-
fallback
evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-s48cd91af-b
-N neutron-openvswi-s48cd91af-b
-A neutron-openvswi-s48cd91af-b -s 10.2.0.3/32 -m mac --mac-source FA:16:3E:EB:43:32 -m comment --comment "Allow traffic from
defined IP/MAC pairs." -j RETURN
-A neutron-openvswi-s48cd91af-b -m comment --comment "Drop traffic without an IP/MAC allow rule." -j DROP
4, Security Group: filter table
20
‱ FORWARD chain
– Security rules
evan@devstack:~$ sudo iptables -t filter -S FORWARD
-P FORWARD ACCEPT
-A FORWARD -j neutron-filter-top
-A FORWARD -j neutron-openvswi-FORWARD
-A FORWARD -j nova-filter-top
-A FORWARD -j nova-api-FORWARD
evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-FORWARD
-N neutron-openvswi-FORWARD
-A neutron-openvswi-FORWARD -m physdev --physdev-out tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Direct
traffic from the VM interface to the security group chain." -j neutron-openvswi-sg-chain
-A neutron-openvswi-FORWARD -m physdev --physdev-in tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Direct traffic
from the VM interface to the security group chain." -j neutron-openvswi-sg-chain
-A neutron-openvswi-FORWARD -m physdev --physdev-out tap4c44aad9-49 --physdev-is-bridged -m comment --comment "Direct
traffic from the VM interface to the security group chain." -j neutron-openvswi-sg-chain
-A neutron-openvswi-FORWARD -m physdev
21
evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-sg-chain
-N neutron-openvswi-sg-chain
-A neutron-openvswi-sg-chain -m physdev --physdev-out tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Jump to the
VM specific chain." -j neutron-openvswi-i48cd91af-b
-A neutron-openvswi-sg-chain -m physdev --physdev-in tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Jump to the VM
specific chain." -j neutron-openvswi-o48cd91af-b
-A neutron-openvswi-sg-chain -m physdev --physdev-out tap4c44aad9-49 --physdev-is-bridged -m comment --comment "Jump to the
VM specific chain." -j neutron-openvswi-i4c44aad9-4
-A neutron-openvswi-sg-chain -m physdev --physdev-in tap4c44aad9-49 --physdev-is-bridged -m comment --comment "Jump to the
VM specific chain." -j neutron-openvswi-o4c44aad9-4
-A neutron-openvswi-sg-chain -m physdev --physdev-out tapc2702f4f-c6 --physdev-is-bridged -m comment --comment "Jump to the
VM specific chain." -j neutron-openvswi-ic2702f4f-c
-A neutron-openvswi-sg-chain -m physdev --physdev-in tapc2702f4f-c6 --physdev-is-bridged -m comment --comment "Jump to the VM
specific chain." -j neutron-openvswi-oc2702f4f-c
-A neutron-openvswi-sg-chain -m physdev --physdev-out tap020fc191-56 --physdev-is-bridged -m comment --comment "Jump to the
VM specific chain." -j neutron-openvswi-i020fc191-5
-A neutron-openvswi-sg-chain -m physdev --physdev-in tap020fc191-56 --physdev-is-bridged -m comment --comment "Jump to the VM
specific chain." -j neutron-openvswi-o020fc191-5
-A neutron-openvswi-sg-chain -j ACCEPT
evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-i48cd91af-b
-N neutron-openvswi-i48cd91af-b
-A neutron-openvswi-i48cd91af-b -m state --state INVALID -m comment --comment "Drop packets that appear related to an existing
connection (e.g. TCP ACK/FIN) but do not have an entry in conntrack." -j DROP
-A neutron-openvswi-i48cd91af-b -m state --state RELATED,ESTABLISHED -m comment --comment "Direct packets associated with a
known session to the RETURN chain." -j RETURN
-A neutron-openvswi-i48cd91af-b -s 10.2.0.2/32 -p udp -m udp --sport 67 --dport 68 -j RETURN
-A neutron-openvswi-i48cd91af-b -p tcp -m tcp --dport 22 -j RETURN
-A neutron-openvswi-i48cd91af-b -p icmp -j RETURN
-A neutron-openvswi-i48cd91af-b -m set --match-set NIPv4fc1d3a02-5217-4f13-91aa- src -j RETURN
-A neutron-openvswi-i48cd91af-b -m comment --comment "Send unmatched traffic to the fallback chain." -j neutron-openvswi-sg-
fallback
4, Security Group: filter table
22
‱ OUTPUT chain
evan@devstack:~$ sudo iptables -t filter -S OUTPUT
-P OUTPUT ACCEPT
-A OUTPUT -j neutron-filter-top
-A OUTPUT -j neutron-openvswi-OUTPUT
-A OUTPUT -j nova-filter-top
-A OUTPUT -j nova-api-OUTPUT
-A OUTPUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT
evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-OUTPUT
-N neutron-openvswi-OUTPUT
evan@devstack:~$ sudo iptables -t filter -S neutron-filter-top
-N neutron-filter-top
-A neutron-filter-top -j neutron-openvswi-local
evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-local
-N neutron-openvswi-local
4, Security Group
23
‱ Rules for a VM: Vm 的Port id 才9䜍
evan@devstack:~/devstack$ nova list
+--------------------------------------+-----------+---------+------------+-------------+---------------------------------------------------------------------+
| ID | Name | Status | Task State | Power State | Networks |
+--------------------------------------+-----------+---------+------------+-------------+---------------------------------------------------------------------+
| fe0fc496-7a3a-4fc7-a929-0cfb7c3cf4ff | c-p2-s1 | SHUTOFF | - | Shutdown | private-2=10.2.0.3 |
evan@devstack:~/devstack$ neutron port-list
+--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+
| id | name | mac_address | fixed_ips |
+--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+
| 48cd91af-b66e-4579-bae3-c85638ff7922 | | fa:16:3e:eb:43:32 | {"subnet_id": "3f1dd2ad-c7b6-43ae-a56f-341616b2e689", "ip_address": "10.2.0.3"} |
evan@devstack:~/devstack$ sudo iptables -S | grep 48cd91af-b6
-A neutron-openvswi-FORWARD -m physdev --physdev-out tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Direct traffic from the VM interface to the security
group chain." -j neutron-openvswi-sg-chain
-A neutron-openvswi-FORWARD -m physdev --physdev-in tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Direct traffic from the VM interface to the security
group chain." -j neutron-openvswi-sg-chain
-A neutron-openvswi-INPUT -m physdev --physdev-in tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Direct incoming traffic from VM to the security group
chain." -j neutron-openvswi-o48cd91af-b
-A neutron-openvswi-sg-chain -m physdev --physdev-out tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Jump to the VM specific chain." -j neutron-openvswi-
i48cd91af-b
-A neutron-openvswi-sg-chain -m physdev --physdev-in tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Jump to the VM specific chain." -j neutron-openvswi-
o48cd91af-b
evan@devstack:~/devstack$ sudo iptables -S | grep neutron-openvswi-i48cd91af-b
-N neutron-openvswi-i48cd91af-b
-A neutron-openvswi-i48cd91af-b -m state --state INVALID -m comment --comment "Drop packets that appear related to an existing connection (e.g. TCP ACK/FIN) but do not
have an entry in conntrack." -j DROP
-A neutron-openvswi-i48cd91af-b -m state --state RELATED,ESTABLISHED -m comment --comment "Direct packets associated with a known session to the RETURN chain." -
j RETURN
-A neutron-openvswi-i48cd91af-b -s 10.2.0.2/32 -p udp -m udp --sport 67 --dport 68 -j RETURN
-A neutron-openvswi-i48cd91af-b -p tcp -m tcp --dport 22 -j RETURN
-A neutron-openvswi-i48cd91af-b -p icmp -j RETURN
-A neutron-openvswi-i48cd91af-b -m set --match-set NIPv4fc1d3a02-5217-4f13-91aa- src -j RETURN
THE END
24
Next
25
‱ Tenant Network Type Introduction
– FLAT, LOCAL
– VLAN
– GRE
– VXLAN
‱ LBAAS
‱ FWAAS
‱ DVR

More Related Content

What's hot (20)

PDF
Linux Tag 2014 OpenStack Networking
yfauser
 
PPTX
OpenStack Networking and Automation
Adam Johnson
 
PDF
OpenStack networking (Neutron)
CREATE-NET
 
PDF
Open stack advanced_part
lilliput12
 
PPTX
Openstack Quantum Security Groups Session
David Lapsley
 
PDF
Whats new in neutron for open stack havana
Kamesh Pemmaraju
 
PDF
Osdc2014 openstack networking yves_fauser
yfauser
 
PDF
Open stack networking_101_part-1
yfauser
 
PDF
Open Source Backends for OpenStack Neutron
mestery
 
PDF
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
markmcclain
 
PDF
OpenStack Tokyo Summit Keynote Slides
mestery
 
PDF
Quantum - Virtual networks for Openstack
salv_orlando
 
PDF
OpenStack Neutron-Neutron interconnections
Thomas Morin
 
PDF
Open stack networking_101_part-2_tech_deep_dive
yfauser
 
PPTX
Quantum (OpenStack Meetup Feb 9th, 2012)
Dan Wendlandt
 
PPTX
OpenStack Neutron behind the Scenes
Anil Bidari ( CEO , Cloud Enabled)
 
PPTX
OVN - Basics and deep dive
Trinath Somanchi
 
PPTX
Openstack Basic with Neutron
KwonSun Bae
 
PPTX
Introduction to Openstack Network
salv_orlando
 
PDF
Open daylight and Openstack
Dave Neary
 
Linux Tag 2014 OpenStack Networking
yfauser
 
OpenStack Networking and Automation
Adam Johnson
 
OpenStack networking (Neutron)
CREATE-NET
 
Open stack advanced_part
lilliput12
 
Openstack Quantum Security Groups Session
David Lapsley
 
Whats new in neutron for open stack havana
Kamesh Pemmaraju
 
Osdc2014 openstack networking yves_fauser
yfauser
 
Open stack networking_101_part-1
yfauser
 
Open Source Backends for OpenStack Neutron
mestery
 
ONUG Tutorial: Bridges and Tunnels Drive Through OpenStack Networking
markmcclain
 
OpenStack Tokyo Summit Keynote Slides
mestery
 
Quantum - Virtual networks for Openstack
salv_orlando
 
OpenStack Neutron-Neutron interconnections
Thomas Morin
 
Open stack networking_101_part-2_tech_deep_dive
yfauser
 
Quantum (OpenStack Meetup Feb 9th, 2012)
Dan Wendlandt
 
OpenStack Neutron behind the Scenes
Anil Bidari ( CEO , Cloud Enabled)
 
OVN - Basics and deep dive
Trinath Somanchi
 
Openstack Basic with Neutron
KwonSun Bae
 
Introduction to Openstack Network
salv_orlando
 
Open daylight and Openstack
Dave Neary
 

Similar to Training open stack networking -neutron (20)

PPTX
Harmonia open iris_basic_v0.1
Yongyoon Shin
 
PPTX
[OpenStack 하반Ʞ 슀터디] Interoperability with ML2: LinuxBridge, OVS and SDN
OpenStack Korea Community
 
PPTX
20151222_Interoperability with ML2: LinuxBridge, OVS and SDN
Sungman Jang
 
PDF
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online
ShapeBlue
 
PDF
IPS_3M_eng
Pierpaolo Palazzoli
 
PDF
VLANs in the Linux Kernel
Kernel TLV
 
PDF
Openstack Networking Internals - first part
lilliput12
 
PPTX
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Evgeny Antyshev
 
PPTX
Tacker vancouver project update
Robin Gong
 
PDF
Instalando Cacti no CentOS 5
Carlos Eduardo
 
PDF
An Introduce of OPNFV (Open Platform for NFV)
Mario Cho
 
PDF
Simplify Networking for Containers
LinuxCon ContainerCon CloudOpen China
 
PDF
Linux Foundation Mentorship Sessions - Kernel Livepatch: An Introduction
Marcos de Souza
 
PPTX
Openstack days taiwan 2016 0712
Naoto Gohko
 
PDF
OpenShift v3 Internal networking details
Etsuji Nakai
 
PDF
Deep Dive Into Quantum
OpenCity Community
 
PPTX
Neutron CI Run on Docker
Hirofumi Ichihara
 
PPTX
Kali kinux1
Mohammad Mafi
 
PDF
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Dropsolid
 
PDF
Rac on NFS
mengjiagou
 
Harmonia open iris_basic_v0.1
Yongyoon Shin
 
[OpenStack 하반Ʞ 슀터디] Interoperability with ML2: LinuxBridge, OVS and SDN
OpenStack Korea Community
 
20151222_Interoperability with ML2: LinuxBridge, OVS and SDN
Sungman Jang
 
KVM Security Groups Under the Hood - Wido den Hollander - Your.Online
ShapeBlue
 
IPS_3M_eng
Pierpaolo Palazzoli
 
VLANs in the Linux Kernel
Kernel TLV
 
Openstack Networking Internals - first part
lilliput12
 
Openstack Third-Party CI and the review of a few Openstack Infrastructure pro...
Evgeny Antyshev
 
Tacker vancouver project update
Robin Gong
 
Instalando Cacti no CentOS 5
Carlos Eduardo
 
An Introduce of OPNFV (Open Platform for NFV)
Mario Cho
 
Simplify Networking for Containers
LinuxCon ContainerCon CloudOpen China
 
Linux Foundation Mentorship Sessions - Kernel Livepatch: An Introduction
Marcos de Souza
 
Openstack days taiwan 2016 0712
Naoto Gohko
 
OpenShift v3 Internal networking details
Etsuji Nakai
 
Deep Dive Into Quantum
OpenCity Community
 
Neutron CI Run on Docker
Hirofumi Ichihara
 
Kali kinux1
Mohammad Mafi
 
Drupaljam 2017 - Deploying Drupal 8 onto Hosted Kubernetes in Google Cloud
Dropsolid
 
Rac on NFS
mengjiagou
 
Ad

Recently uploaded (20)

PPTX
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
PDF
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
PPTX
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
PDF
Capcut Pro Crack For PC Latest Version {Fully Unlocked} 2025
hashhshs786
 
PDF
Beyond Binaries: Understanding Diversity and Allyship in a Global Workplace -...
Imma Valls Bernaus
 
PDF
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
PDF
Streamline Contractor Lifecycle- TECH EHS Solution
TECH EHS Solution
 
PDF
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
PPTX
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
PPTX
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
PPTX
Engineering the Java Web Application (MVC)
abhishekoza1981
 
PPTX
A Complete Guide to Salesforce SMS Integrations Build Scalable Messaging With...
360 SMS APP
 
PDF
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
PDF
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
PDF
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
PPTX
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
 
PPTX
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
PDF
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
PPTX
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
PPTX
Comprehensive Guide: Shoviv Exchange to Office 365 Migration Tool 2025
Shoviv Software
 
Migrating Millions of Users with Debezium, Apache Kafka, and an Acyclic Synch...
MD Sayem Ahmed
 
Linux Certificate of Completion - LabEx Certificate
VICTOR MAESTRE RAMIREZ
 
Revolutionizing Code Modernization with AI
KrzysztofKkol1
 
Capcut Pro Crack For PC Latest Version {Fully Unlocked} 2025
hashhshs786
 
Beyond Binaries: Understanding Diversity and Allyship in a Global Workplace -...
Imma Valls Bernaus
 
Revenue streams of the Wazirx clone script.pdf
aaronjeffray
 
Streamline Contractor Lifecycle- TECH EHS Solution
TECH EHS Solution
 
GetOnCRM Speeds Up Agentforce 3 Deployment for Enterprise AI Wins.pdf
GetOnCRM Solutions
 
Java Native Memory Leaks: The Hidden Villain Behind JVM Performance Issues
Tier1 app
 
MailsDaddy Outlook OST to PST converter.pptx
abhishekdutt366
 
Engineering the Java Web Application (MVC)
abhishekoza1981
 
A Complete Guide to Salesforce SMS Integrations Build Scalable Messaging With...
360 SMS APP
 
Automate Cybersecurity Tasks with Python
VICTOR MAESTRE RAMIREZ
 
iTop VPN With Crack Lifetime Activation Key-CODE
utfefguu
 
Thread In Android-Mastering Concurrency for Responsive Apps.pdf
Nabin Dhakal
 
Equipment Management Software BIS Safety UK.pptx
BIS Safety Software
 
Agentic Automation Journey Session 1/5: Context Grounding and Autopilot for E...
klpathrudu
 
Alexander Marshalov - How to use AI Assistants with your Monitoring system Q2...
VictoriaMetrics
 
Writing Better Code - Helping Developers make Decisions.pptx
Lorraine Steyn
 
Comprehensive Guide: Shoviv Exchange to Office 365 Migration Tool 2025
Shoviv Software
 
Ad

Training open stack networking -neutron

  • 1. OpenStack Networking-- Neutron Internal Training Haven(Yan Haifeng)/ Oct 17, 2015 Software Engineer Blog http://yanheven.github.io/ 1
  • 2. 2 3 Router, Network, Subnet and Port Related Linux Technology Linux NameSpace 1 Neutron Agenda 2 5 Security Group 4 Iptables usage in Neutron
  • 3. 1, Entities in Neutron 3
  • 4. 1, Entities in Neutron ‱ Network隔犻的 L2 ćŸŸïŒŒćŻä»„æ˜Żè™šæ‹Ÿă€é€»èŸ‘æˆ–äș€æąïŒŒćŒäž€äžȘ眑络䞭的䞻æœșćœŒæ­€ L2 ćŻè§ă€‚ ‱ External Network – arping 10.0.1.2 ‱ Subnet隔犻的 L3 ćŸŸïŒŒIP ćœ°ć€ć—ă€‚ć…¶äž­æŻäžȘæœșć™šæœ‰äž€äžȘ IPïŒŒćŒäž€äžȘć­çœ‘çš„äž»æœșćœŒæ­€ L3 ćŻè§ă€‚ – ping 10.0.1.2 – ping 10.0.0.7 ‱ PortïŒšçœ‘ç»œäžŠè™šæ‹Ÿă€é€»èŸ‘æˆ–äș€æąç«ŻćŁă€‚ æ‰€æœ‰èż™äș›ćźžäœ“éƒœæ˜Żè™šæ‹Ÿçš„ïŒŒæ‹„有è‡ȘćŠšç”Ÿæˆçš„ć”Żäž€æ ‡ç€șid æ”ŻæŒCRUDćŠŸèƒœïŒŒćč¶ćœšæ•°æźćș“äž­è·ŸèžȘèź°ćœ•çŠ¶æ€ă€‚ ‱ Fixed ip ‱ Floating ip ‱ Router : è™šæ‹Ÿè·Żç”±ć™šïŒŒç”šäșŽèź©äž€äžȘäžćŒçš„äž‰ć±‚çœ‘ç»œé€šäżĄă€‚ – Ping 10.2.0.3 4
  • 6. 2, Linux Networking Technology ‱ bridgeïŒšçœ‘æĄ„ïŒŒLinux侭甹äșŽèĄšç€ș侀äžȘèƒœèżžæŽ„äžćŒçœ‘ç»œèźŸć€‡çš„è™šæ‹ŸèźŸć€‡ïŒŒlinuxäž­äŒ ç»ŸćźžçŽ°çš„çœ‘æĄ„ ç±» 䌌䞀äžȘhub èźŸć€‡ïŒŒè€ŒovsçźĄç†çš„çœ‘æĄ„äž€èˆŹç±»äŒŒäș€æąæœș。 – sudo ovs-vsctl show – sudo ovs-vsctl list-br ‱ br-intbridge-integrationïŒŒç»Œćˆçœ‘æĄ„ïŒŒćžžç”šäșŽèĄšç€șćźžçŽ°äž»èŠć†…éƒšçœ‘ç»œćŠŸèƒœçš„çœ‘æĄ„ă€‚ ‱ br-exbridge-externalïŒŒć€–éƒšçœ‘æĄ„ïŒŒé€šćžžèĄšç€șèŽŸèŽŁè·Ÿć€–éƒšçœ‘ç»œé€šäżĄçš„çœ‘æĄ„ă€‚ ‱ GREGeneral Routing EncapsulationïŒŒäž€ç§é€šèż‡ć°èŁ…æ„ćźžçŽ°éš§é“çš„æ–čćŒă€‚ćœšopenstackäž­äž€èˆŹ æ˜ŻćŸș äșŽL3的greïŒŒćłoriginal pkt/GRE/IP/Ethernet ‱ VETH虚拟ethernetæŽ„ćŁïŒŒé€šćžžä»„pair的æ–čćŒć‡șçŽ°ïŒŒäž€ç«Żć‘ć‡șçš„çœ‘ćŒ…ïŒŒäŒšèą«ćŠäž€ç«ŻæŽ„æ”¶ïŒŒćŻä»„ćœą 成 䞀äžȘçœ‘æĄ„äč‹é—Žçš„通道。 6
  • 7. 2, Linux Networking Technology ‱ qvbneutron veth, Linux Bridge-side – bridge link ‱ qvoneutron veth, OVS-side – sudo ovs-vsctl show ‱ TAPèźŸć€‡ïŒšæšĄæ‹Ÿäž€äžȘäșŒć±‚çš„çœ‘ç»œèźŸć€‡ïŒŒćŻä»„æŽ„ć—ć’Œć‘é€äșŒć±‚çœ‘ćŒ…ă€‚ – bridge link ‱ TUNèźŸć€‡ïŒšæšĄæ‹Ÿäž€äžȘäž‰ć±‚çš„çœ‘ç»œèźŸć€‡ïŒŒćŻä»„æŽ„ć—ć’Œć‘é€äž‰ć±‚çœ‘ćŒ…ă€‚ – ip tuntap ‱ iptablesLinux äžŠćžžè§çš„ćźžçŽ°ćź‰ć…šç­–ç•„çš„é˜Čç«ćą™èœŻä»¶ă€‚ ‱ Vlan虚拟 LanïŒŒćŒäž€äžȘ物理 Lan äž‹ç”šæ ‡ç­ŸćźžçŽ°éš”çŠ»ïŒŒćŻç”šæ ‡ć·äžș1-4094。 ‱ VXLANïŒšäž€ć„—ćˆ©ç”š UDP ćèźźäœœäžșćș•ć±‚äŒ èŸ“ćèźźçš„ Overlay ćźžçŽ°ă€‚äž€èˆŹèź€äžș䜜äžș VLan æŠ€æœŻçš„ć»¶ 䌞或 æ›żä»Łè€…ă€‚ ‱ namespaceïŒšç”šæ„ćźžçŽ°éš”çŠ»çš„äž€ć„—æœșćˆ¶ïŒŒäžćŒ namespace 䞭的蔄æșäč‹é—ŽćœŒæ­€äžćŻè§ă€‚ – ip netns 7
  • 9. 3, Linux NameSpace 9 ‱ 朹 Linux äž­ïŒŒçœ‘ç»œćć­—ç©șé—ŽćŻä»„èą«èź€äžșæ˜Żéš”çŠ»çš„æ‹„æœ‰ć•ç‹Źçœ‘ç»œæ ˆïŒˆçœ‘ćĄă€è·Żç”±èœŹć‘èĄšă€iptablesïŒ‰çš„çŽŻćąƒă€‚ çœ‘ç»œćć­—ç©șé—Žç»ćžžç”šæ„éš”çŠ»çœ‘ç»œèźŸć€‡ć’ŒæœćŠĄïŒŒćȘæœ‰æ‹„æœ‰ćŒæ ·çœ‘ç»œćć­—ç©șé—Žçš„èźŸć€‡ïŒŒæ‰èƒœçœ‹ćˆ°ćœŒæ­€ă€‚ ‱ ćŻä»„ç”šip netns ć‘œä»€æ„æŸ„çœ‹ć·Čç»ć­˜ćœšçš„ćć­—ç©ș问, ㊠execćŻä»„æ‰§èĄŒć„ç§çœ‘ç»œç›žć…łć‘œä»€ïŒŒçœ‘ç»œæŽ’æŸ„é”™èŻŻæ—¶ç»ćžž ç”šćˆ°ïŒŒćŻä»„ç›ŽæŽ„èżžæŽ„ćˆ°VM。 – Ping, route, ssh, tcpdump, arping, etc. evan@devstack:~$ ip netns qdhcp-8709f095-72c6-400e-ad68-6a413ab4d936 qrouter-b58c06ea-02ef-4066-bb8d-0d6ba1df29d9 qdhcp-27fb6448-5708-4054-a1ad-c3ba94069fe6 evan@devstack:~$ sudo ip netns exec qrouter-b58c06ea-02ef-4066-bb8d-0d6ba1df29d9 ip link 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 8: qg-60277fd9-b3: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default 9: qr-023f7722-39: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN mode DEFAULT group default link/ether fa:16:3e:b2:3a:e0 brd ff:ff:ff:ff:ff:ff
  • 10. 3, Linux NameSpace 10 ‱ DHCP æœćŠĄ – dhcpæœćŠĄæ˜Żé€šèż‡dnsmasqèż›çš‹ïŒˆèœ»é‡çș§æœćŠĄć™šïŒŒćŻä»„提䟛dns、dhcp、tftpç­‰æœćŠĄïŒ‰æ„ćźžçŽ°çš„ïŒŒèŻ„èż›çš‹ç»‘ćźšćˆ°dhcp損歗ç©ș问侭的 br-intçš„æŽ„ćŁäžŠă€‚ćŻä»„æŸ„çœ‹ç›žć…łçš„èż›çš‹ă€‚ ‱ è·Żç”±èœŹć‘æœćŠĄ – routeræ˜ŻæäŸ›è·š subnet 的äș’è”ćŠŸèƒœçš„ă€‚æŻ”ćŠ‚ç”šæˆ·çš„ć†…éƒšçœ‘ç»œäž­äž»æœșæƒłèŠèźżé—źć€–éƒšäș’è”çœ‘çš„ćœ°ć€ïŒŒć°±éœ€èЁrouteræ„èœŹć‘ïŒˆć› æ­€ïŒŒ æ‰€æœ‰è·Ÿć€–éƒšçœ‘ç»œçš„æ”é‡éƒœćż…éĄ»ç»èż‡routerïŒ‰ă€‚ç›źć‰routerçš„ćźžçŽ°æ˜Żé€šèż‡iptablesèż›èĄŒçš„ă€‚ – ćŒæ ·çš„ïŒŒrouteræœćŠĄäčŸèżèĄŒćœšè‡Șć·±çš„ćć­—ç©ș闎䞭 evan@devstack:~$ ip netns qdhcp-8709f095-72c6-400e-ad68-6a413ab4d936 qrouter-b58c06ea-02ef-4066-bb8d-0d6ba1df29d9 qdhcp-27fb6448-5708-4054-a1ad-c3ba94069fe6 evan@devstack:~$ ps -ef | grep 8709f095-72c6-400e-ad68-6a413ab4d936 evan@devstack:~$ sudo ip netns exec qrouter-b58c06ea-02ef-4066-bb8d-0d6ba1df29d9 iptables -t nat -S
  • 12. 4, Iptables 12 ‱ Netfilteræ˜ŻLinux 2.4.xćŒ•ć…„çš„äž€äžȘć­çł»ç»ŸïŒŒćźƒäœœäžș侀äžȘé€šç”šçš„ă€æŠœè±Ąçš„æĄ†æž¶ïŒŒæäŸ›äž€æ•Žć„—çš„hookć‡œæ•°çš„ 缡理æœșćˆ¶ïŒŒäœżćŸ—èŻžćŠ‚æ•°æźćŒ…èż‡æ»€ă€çœ‘ç»œćœ°ć€èœŹæą(NAT)撌ćŸșäșŽćèźźç±»ćž‹çš„èżžæŽ„跟èžȘ成äžșäș†ćŻèƒœ
  • 13. 4, Iptables 13 ‱ ć‚è€ƒ http://blog.chinaunix.net/uid-23069658-id-3160506.html ‱ iptablesćȘæ˜ŻLinuxé˜Čç«ćą™çš„çźĄç†ć·„ć…·è€Œć·Č䜍äșŽ/sbin/iptablesă€‚çœŸæ­ŁćźžçŽ°é˜Čç«ćą™ćŠŸèƒœçš„æ˜ŻnetfilterïŒŒćźƒæ˜Ż Linuxć†…æ žäž­ćźžçŽ°ćŒ…èż‡æ»€çš„ć†…éƒšç»“æž„ă€‚ ‱ 慳äșŽćèźźæ ˆé‚Łäș”äžȘ慳锼ç‚č“ABCDE”Netfilter朹netfilter_ipv4.häž­ć°†èż™äžȘäș”äžȘç‚čçš„ć‘œć
  • 14. 4, Iptables 14 ‱ Iptables çš„ć€„ç†é€»èŸ‘
  • 15. 4, Iptables 15 ‱ Iptables ç»„æˆéƒšćˆ† ‱ ć‚è€ƒ http://www.cnblogs.com/ggjucheng/archive/2012/08/19/2646466.html
  • 16. 4, Iptables rules for NAT 16 ‱ Iptables 朹Router䞭的䜜甚evan@devstack:~$ sudo ip netns exec qrouter-b58c06ea-02ef-4066-bb8d-0d6ba1df29d9 iptables -t nat -S -P PREROUTING ACCEPT -P INPUT ACCEPT -P OUTPUT ACCEPT -P POSTROUTING ACCEPT -N neutron-postrouting-bottom -N neutron-vpn-agen-OUTPUT -N neutron-vpn-agen-POSTROUTING -N neutron-vpn-agen-PREROUTING -N neutron-vpn-agen-float-snat -N neutron-vpn-agen-snat -A PREROUTING -j neutron-vpn-agen-PREROUTING -A OUTPUT -j neutron-vpn-agen-OUTPUT -A POSTROUTING -j neutron-vpn-agen-POSTROUTING -A POSTROUTING -j neutron-postrouting-bottom -A neutron-postrouting-bottom -m comment --comment "Perform source NAT on outgoing traffic." -j neutron-vpn-agen-snat -A neutron-vpn-agen-OUTPUT -d 192.168.1.4/32 -j DNAT --to-destination 10.0.0.6 -A neutron-vpn-agen-POSTROUTING ! -i qg-60277fd9-b3 ! -o qg-60277fd9-b3 -m conntrack ! -- ctstate DNAT -j ACCEPT -A neutron-vpn-agen-PREROUTING -d 192.168.1.4/32 -j DNAT --to-destination 10.0.0.6 -A neutron-vpn-agen-PREROUTING -d 169.254.169.254/32 -i qr-+ -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 9697 -A neutron-vpn-agen-float-snat -s 10.0.0.6/32 -j SNAT --to-source 192.168.1.4 -A neutron-vpn-agen-snat -j neutron-vpn-agen-float-snat -A neutron-vpn-agen-snat -o qg-60277fd9-b3 -j SNAT --to-source 192.168.0.200 -A neutron-vpn-agen-snat -m mark ! --mark 0x2/0xffff -m conntrack --ctstate DNAT -j SNAT --to-
  • 18. 4, Security Group: filter table 18 ‱ INPUT chain – DHCP traffic allow – IP/MAC pair allow
  • 19. 19 evan@devstack:~$ sudo iptables -t filter -S INPUT -P INPUT ACCEPT -A INPUT -j neutron-openvswi-INPUT -A INPUT -j nova-api-INPUT evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-INPUT -N neutron-openvswi-INPUT -A neutron-openvswi-INPUT -m physdev --physdev-in tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Direct incoming traffic from VM to the security group chain." -j neutron-openvswi-o48cd91af-b -A neutron-openvswi-INPUT -m physdev --physdev-in tap4c44aad9-49 --physdev-is-bridged -m comment --comment "Direct incoming traffic from VM to the security group chain." -j neutron-openvswi-o4c44aad9-4 -A neutron-openvswi-INPUT -m physdev --physdev-in tapc2702f4f-c6 --physdev-is-bridged -m comment --comment "Direct incoming traffic from VM to the security group chain." -j neutron-openvswi-oc2702f4f-c -A neutron-openvswi-INPUT -m physdev --physdev-in tap020fc191-56 --physdev-is-bridged -m comment --comment "Direct incoming traffic from VM to the security group chain." -j neutron-openvswi-o020fc191-5 evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-o48cd91af-b -N neutron-openvswi-o48cd91af-b -A neutron-openvswi-o48cd91af-b -p udp -m udp --sport 68 --dport 67 -m comment --comment "Allow DHCP client traffic." -j RETURN -A neutron-openvswi-o48cd91af-b -j neutron-openvswi-s48cd91af-b -A neutron-openvswi-o48cd91af-b -p udp -m udp --sport 67 --dport 68 -m comment --comment "Prevent DHCP Spoofing by VM." -j DROP -A neutron-openvswi-o48cd91af-b -m state --state INVALID -m comment --comment "Drop packets that appear related to an existing connection (e.g. TCP ACK/FIN) but do not have an entry in conntrack." -j DROP -A neutron-openvswi-o48cd91af-b -m state --state RELATED,ESTABLISHED -m comment --comment "Direct packets associated with a known session to the RETURN chain." -j RETURN -A neutron-openvswi-o48cd91af-b -j RETURN -A neutron-openvswi-o48cd91af-b -m comment --comment "Send unmatched traffic to the fallback chain." -j neutron-openvswi-sg- fallback evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-s48cd91af-b -N neutron-openvswi-s48cd91af-b -A neutron-openvswi-s48cd91af-b -s 10.2.0.3/32 -m mac --mac-source FA:16:3E:EB:43:32 -m comment --comment "Allow traffic from defined IP/MAC pairs." -j RETURN -A neutron-openvswi-s48cd91af-b -m comment --comment "Drop traffic without an IP/MAC allow rule." -j DROP
  • 20. 4, Security Group: filter table 20 ‱ FORWARD chain – Security rules evan@devstack:~$ sudo iptables -t filter -S FORWARD -P FORWARD ACCEPT -A FORWARD -j neutron-filter-top -A FORWARD -j neutron-openvswi-FORWARD -A FORWARD -j nova-filter-top -A FORWARD -j nova-api-FORWARD evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-FORWARD -N neutron-openvswi-FORWARD -A neutron-openvswi-FORWARD -m physdev --physdev-out tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Direct traffic from the VM interface to the security group chain." -j neutron-openvswi-sg-chain -A neutron-openvswi-FORWARD -m physdev --physdev-in tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Direct traffic from the VM interface to the security group chain." -j neutron-openvswi-sg-chain -A neutron-openvswi-FORWARD -m physdev --physdev-out tap4c44aad9-49 --physdev-is-bridged -m comment --comment "Direct traffic from the VM interface to the security group chain." -j neutron-openvswi-sg-chain -A neutron-openvswi-FORWARD -m physdev
  • 21. 21 evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-sg-chain -N neutron-openvswi-sg-chain -A neutron-openvswi-sg-chain -m physdev --physdev-out tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Jump to the VM specific chain." -j neutron-openvswi-i48cd91af-b -A neutron-openvswi-sg-chain -m physdev --physdev-in tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Jump to the VM specific chain." -j neutron-openvswi-o48cd91af-b -A neutron-openvswi-sg-chain -m physdev --physdev-out tap4c44aad9-49 --physdev-is-bridged -m comment --comment "Jump to the VM specific chain." -j neutron-openvswi-i4c44aad9-4 -A neutron-openvswi-sg-chain -m physdev --physdev-in tap4c44aad9-49 --physdev-is-bridged -m comment --comment "Jump to the VM specific chain." -j neutron-openvswi-o4c44aad9-4 -A neutron-openvswi-sg-chain -m physdev --physdev-out tapc2702f4f-c6 --physdev-is-bridged -m comment --comment "Jump to the VM specific chain." -j neutron-openvswi-ic2702f4f-c -A neutron-openvswi-sg-chain -m physdev --physdev-in tapc2702f4f-c6 --physdev-is-bridged -m comment --comment "Jump to the VM specific chain." -j neutron-openvswi-oc2702f4f-c -A neutron-openvswi-sg-chain -m physdev --physdev-out tap020fc191-56 --physdev-is-bridged -m comment --comment "Jump to the VM specific chain." -j neutron-openvswi-i020fc191-5 -A neutron-openvswi-sg-chain -m physdev --physdev-in tap020fc191-56 --physdev-is-bridged -m comment --comment "Jump to the VM specific chain." -j neutron-openvswi-o020fc191-5 -A neutron-openvswi-sg-chain -j ACCEPT evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-i48cd91af-b -N neutron-openvswi-i48cd91af-b -A neutron-openvswi-i48cd91af-b -m state --state INVALID -m comment --comment "Drop packets that appear related to an existing connection (e.g. TCP ACK/FIN) but do not have an entry in conntrack." -j DROP -A neutron-openvswi-i48cd91af-b -m state --state RELATED,ESTABLISHED -m comment --comment "Direct packets associated with a known session to the RETURN chain." -j RETURN -A neutron-openvswi-i48cd91af-b -s 10.2.0.2/32 -p udp -m udp --sport 67 --dport 68 -j RETURN -A neutron-openvswi-i48cd91af-b -p tcp -m tcp --dport 22 -j RETURN -A neutron-openvswi-i48cd91af-b -p icmp -j RETURN -A neutron-openvswi-i48cd91af-b -m set --match-set NIPv4fc1d3a02-5217-4f13-91aa- src -j RETURN -A neutron-openvswi-i48cd91af-b -m comment --comment "Send unmatched traffic to the fallback chain." -j neutron-openvswi-sg- fallback
  • 22. 4, Security Group: filter table 22 ‱ OUTPUT chain evan@devstack:~$ sudo iptables -t filter -S OUTPUT -P OUTPUT ACCEPT -A OUTPUT -j neutron-filter-top -A OUTPUT -j neutron-openvswi-OUTPUT -A OUTPUT -j nova-filter-top -A OUTPUT -j nova-api-OUTPUT -A OUTPUT -o virbr0 -p udp -m udp --dport 68 -j ACCEPT evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-OUTPUT -N neutron-openvswi-OUTPUT evan@devstack:~$ sudo iptables -t filter -S neutron-filter-top -N neutron-filter-top -A neutron-filter-top -j neutron-openvswi-local evan@devstack:~$ sudo iptables -t filter -S neutron-openvswi-local -N neutron-openvswi-local
  • 23. 4, Security Group 23 ‱ Rules for a VM: Vm 的Port id 才9䜍 evan@devstack:~/devstack$ nova list +--------------------------------------+-----------+---------+------------+-------------+---------------------------------------------------------------------+ | ID | Name | Status | Task State | Power State | Networks | +--------------------------------------+-----------+---------+------------+-------------+---------------------------------------------------------------------+ | fe0fc496-7a3a-4fc7-a929-0cfb7c3cf4ff | c-p2-s1 | SHUTOFF | - | Shutdown | private-2=10.2.0.3 | evan@devstack:~/devstack$ neutron port-list +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ | id | name | mac_address | fixed_ips | +--------------------------------------+------+-------------------+-------------------------------------------------------------------------------------------------------------+ | 48cd91af-b66e-4579-bae3-c85638ff7922 | | fa:16:3e:eb:43:32 | {"subnet_id": "3f1dd2ad-c7b6-43ae-a56f-341616b2e689", "ip_address": "10.2.0.3"} | evan@devstack:~/devstack$ sudo iptables -S | grep 48cd91af-b6 -A neutron-openvswi-FORWARD -m physdev --physdev-out tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Direct traffic from the VM interface to the security group chain." -j neutron-openvswi-sg-chain -A neutron-openvswi-FORWARD -m physdev --physdev-in tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Direct traffic from the VM interface to the security group chain." -j neutron-openvswi-sg-chain -A neutron-openvswi-INPUT -m physdev --physdev-in tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Direct incoming traffic from VM to the security group chain." -j neutron-openvswi-o48cd91af-b -A neutron-openvswi-sg-chain -m physdev --physdev-out tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Jump to the VM specific chain." -j neutron-openvswi- i48cd91af-b -A neutron-openvswi-sg-chain -m physdev --physdev-in tap48cd91af-b6 --physdev-is-bridged -m comment --comment "Jump to the VM specific chain." -j neutron-openvswi- o48cd91af-b evan@devstack:~/devstack$ sudo iptables -S | grep neutron-openvswi-i48cd91af-b -N neutron-openvswi-i48cd91af-b -A neutron-openvswi-i48cd91af-b -m state --state INVALID -m comment --comment "Drop packets that appear related to an existing connection (e.g. TCP ACK/FIN) but do not have an entry in conntrack." -j DROP -A neutron-openvswi-i48cd91af-b -m state --state RELATED,ESTABLISHED -m comment --comment "Direct packets associated with a known session to the RETURN chain." - j RETURN -A neutron-openvswi-i48cd91af-b -s 10.2.0.2/32 -p udp -m udp --sport 67 --dport 68 -j RETURN -A neutron-openvswi-i48cd91af-b -p tcp -m tcp --dport 22 -j RETURN -A neutron-openvswi-i48cd91af-b -p icmp -j RETURN -A neutron-openvswi-i48cd91af-b -m set --match-set NIPv4fc1d3a02-5217-4f13-91aa- src -j RETURN
  • 25. Next 25 ‱ Tenant Network Type Introduction – FLAT, LOCAL – VLAN – GRE – VXLAN ‱ LBAAS ‱ FWAAS ‱ DVR