<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">
<div apple-content-edited="true">
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
Hi, Bob:</div>
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
<br>
</div>
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
Thank you very much for the further clarification! </div>
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
<br>
</div>
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
I tried both approach tonight and noticed that when "external_network_bridge" is unset, L3_agent failed to start due to the fact that I was using "br-eth3" for both tenant network and external network. L3 kept looking for "br-ex" and it didn't exist at all
 (br-eth3 and br-int are the only bridges). </div>
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
<br>
</div>
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
That being said, if we try to create more than one external networks, they all must point to br-ex. If this is the case, then the only way to realize multiple external networks is to use VLAN tagging on br-ex to separate the traffic. Is my observation correct?</div>
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
<br>
</div>
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
Thanks again!</div>
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
<br>
</div>
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
Shixiong</div>
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
<br>
</div>
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
<br>
</div>
<div style="color: rgb(0, 0, 0); font-family: Helvetica; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
<div style="margin: 0in 0in 0.0001pt; font-size: 12pt; font-family: 'Times New Roman', serif; ">
<span style="font-size: 13.5pt; font-family: Calibri, sans-serif; "><br class="Apple-interchange-newline">
</span></div>
</div>
</div>
<br>
<div>
<div>On Jun 21, 2013, at 2:39 PM, Robert Kukura <<a href="mailto:rkukura@redhat.com">rkukura@redhat.com</a>> wrote:</div>
<br class="Apple-interchange-newline">
<blockquote type="cite">On 06/21/2013 02:17 PM, Shixiong Shang (shshang) wrote:<br>
<blockquote type="cite">Hi, Bob:<br>
<br>
Thanks a ton for the reply (even I didn't raise the original question).<br>
It is very informational and educational. I read it many many times and<br>
it helps me clarify some confusion as you rightly pointed out. But I<br>
still have some questions and would like to make sure I precisely<br>
understand what you mean here.<br>
<br>
1) In my current setup, I created external network net_ext, but later on<br>
I realized that router cannot ping its default gateway. I have to<br>
manually set the tag for qg- port on br-eth3 (mapped to physnet3) to 311<br>
in order to make the ping happen. Based on your explanation, is it<br>
because provider attributes in "quantum net-create" command are ignored<br>
by L3 agent, so no VLAN tagging takes place?<br>
<br>
quantum net-create --tenant-id 110ea394615d4cefa9824cf8829c841f net_ext<br>
--provider:network_type vlan --provider:physical_network physnet3<br>
--provider:segmentation_id 311 --router:external=True<br>
</blockquote>
<br>
Yes, if external_network_bridge is not empty (i.e. is its default value<br>
of br-ex), then the provider attributes of the external network are<br>
completely ignored. This is because l3-agent plugs directly into the<br>
specified bridge rather than into br-int, and openvswitch-agent does not<br>
get involved.<br>
<br>
<blockquote type="cite"><br>
<br>
2) When provider attributes in "quantum net-create" command are ignored<br>
by L3 agent, there is no linkage between external network/subnet to a<br>
specific bridge, and that is why we need to manually put in<br>
"external_network_bridge" in l3_agent.ini. Is that correct?<br>
</blockquote>
<br>
I guess I'd turn it around, and say that external_network_bridge being<br>
set causes the provider attributes to be ignored.<br>
<br>
<blockquote type="cite"><br>
3) If 1) and 2) are correct, then one limitation I can see by using<br>
"provider external network" approach is, we can only have a single<br>
external bridge and a single external network on quantum network node in<br>
order to formulate 1-to-1 mapping. Is that correct?<br>
</blockquote>
<br>
<br>
I don't think this is a limitation of the provider external network<br>
approach. By unsetting external_network_bridge and using the provider<br>
attributes instead, you can use any number of external networks, and<br>
they can even be on VLANs.<br>
<br>
When using a non-empty external_network_bridge, you can only have one<br>
external network (per l3-agent).<br>
<br>
<blockquote type="cite"><br>
4) In "external bridge" approach, is there specific reason you recommend<br>
using network_type of local?<br>
</blockquote>
<br>
Yes - to avoid confusion and avoid wasting a valuable resource. The<br>
original upstream documentation for folsom showed creating the external<br>
network as a normal tenant network (no provider attributes). Doing so<br>
would allocate a tenant network that would never actually be used. If<br>
tenant_network_type is vlan, this wastes a VLAN tag from the pool.<br>
Creating the external network as a provider network with a network_type<br>
of local avoids allocating a tenant network.<br>
<br>
-Bob<br>
<br>
<blockquote type="cite"><br>
Thanks a lot again!<br>
<br>
Shixiong<br>
<br>
<br>
<br>
<br>
<br>
On Jun 21, 2013, at 12:43 PM, Robert Kukura <<a href="mailto:rkukura@redhat.com">rkukura@redhat.com</a><br>
<<a href="mailto:rkukura@redhat.com">mailto:rkukura@redhat.com</a>>><br>
wrote:<br>
<br>
<blockquote type="cite">There are two different approaches to connecting a router to an external<br>
network. One uses an external bridge (br-ex), and bypasses the L2 agent.<br>
The other uses a provider external network, and the interface driver and<br>
L2 agent handle this network just like any other network (using br-int).<br>
To use a provider external network, just set:<br>
<br>
external_network_bridge =<br>
<br>
in /etc/quantum/l3_agent.ini and create the external network with the<br>
provider attributes describing it (typically provider:network_type is<br>
flat or vlan).<br>
<br>
The provider external network approach is more flexible - the external<br>
network can be a VLAN and can coexist on the same physical network with<br>
tenant networks, VMs can be connected directly to the external network,<br>
different routers can use different external networks, etc.. Also, this<br>
approach works with both openvswitch and linuxbridge, whereas the<br>
external bridge approach only works with openvswitch.<br>
<br>
I see that chapter 5 in the referenced upstream documentation may be<br>
adding to the confusion by sort of mixing the two approaches. It is<br>
specifying the provider details on the external network:<br>
<br>
quantum net-create --tenant-id $tenant public01 \<br>
--provider:network_type flat \<br>
--provider:physical_network physnet1 \<br>
--router:external=True<br>
<br>
but the l3 agent is accessing it via br-ex where the provider details<br>
don't matter because the l2 agent is bypassed. If using the external<br>
bridge, I'd recommend creating the external network with<br>
provider:network_type of local as is shown in appendix A:<br>
<br>
quantum net-create Ext-Net --provider:network_type local \<br>
--router:external true<br>
<br>
Hope this helps,<br>
<br>
-Bob<br>
</blockquote>
<br>
</blockquote>
<br>
</blockquote>
</div>
<br>
</body>
</html>