在TF中文社区,爱折腾的“实战派”们经常探讨有关SDN和Tungsten Fabric的各种问题,我们将其中的精华部分整理出来,形成 “ TF Q&A ” 栏目,他们碰到的困惑、踩过的坑,也许正是你想要了解的——
Q:最近在做的小实验,OpenStack+Tungsten Fabric模式的网络性能以及稳定性问题,但是因为没有瞻博的路由器,没有gateway,VM无法访问外部网络。想请问有没有 OpenStack+ Tungsten Fabric模式,有没有其他替代的访问外部网络的方式,并且有没有这方面的文档?
杨雨:可以用vMX或者更简单的vSRX。
https://github.com/Juniper/contrail-controller/wiki/Simple-Gateway 也可以用来做测试。
Q:Tungsten Fabric如何支持多个VXLAN fabric?(物理网建了VXLAN fabric,他们各自有各自的gateway,Tungsten Fabric要跟这几个物理网的fabric打通,也就是说Tungsten Fabric里面管理的这些宿主机里面的VM或者容器的实例,能够跟物理VXLAN里面BMS裸金属服务器通起来,同时它能把不同的fabric里面的这些虚机连接到一起)
Edward Ting: 这个是可以做的,但它有一个plug in,要自己写。因为物理的Facebook的switch或者VXLAN fabric,它们目前只支持Juniper的,但社区的版本是只支持Juniper的,然后怎么去配置这些东西,它在5.1版是用ansible或一些自动化的脚本做,社区的UI不能做这些事情。
Q:有大神知道这个咋解决的吗(Disk for DB is too low)?
wenrui:/etc/contrail/common.env,需要把config database的docker compose重启一下,自己做lab的话,这个问题可以忽略,不影响功能。
https://github.com/Juniper/contrail-ansible-deployer/wiki/Provisioning-F.A.Q
Q:对于 Tungsten Fabric,Overlay隧道可以是基于GRE/UDP的MPLS隧道,也可以是VXLAN隧道。为什么要用GRE/UDP的MPLS?
JianXun-KkBLuE:一个原因是之前vxlan还不够成熟,第二个是考虑可能SP(运营商)的场景。
Wenrui:Tungsten Fabric一开始就是vRouter组网,是L3 overlay,Juniper又比较擅长MPLS,另外十多年前vxlan也不太成熟,所以vxlan是后来支持的。
Q:咨询大家一个小白问题,DPDK有没有flow 模式和packet 模式 ?
钱誉:http://doc.dpdk.org/guides/prog_guide/flow_classify_lib.html 可能未必是你所想的模式。有流分类库和数据包分发器库。
我的理解是这样的,因为在contrail里默认就是基于flow的模式,跟DPDK网卡配置没有关系。默认情况下每个vrouter都有一个流标的。contrail还提供另一种包模式。
因为流不是无限的,而且很多时候我们不需要那么严格的流功能,那么流的意义就失去了,另一个主要原因就在于流是很废资源的,会在使用中窃取负载资源。
当然这个里面其实有利有弊存在,比如说包模式的优点在于出现故障时候能快速收敛,不需要时间去创建流,vrouter上没有SYN FLOOD这种DDOS,因为vrouter不需要保持状态,当然缺点就是没有留就少了分析,网络策略不能实现ACL,不能进行镜像或者steering,仅仅支持单个SI服务链,也没有RPF等等。
[root@openshift-comp01 ~]# vif --get 3Vrouter Interface Tablevif0/3 OS: tap233eefc1-94 Type:Virtual HWaddr:00:00:5e:00:01:00 IPaddr:5.5.5.4Vrf:2 Mcast Vrf:2 Flags:PL3L2DUufEr QOS:-1 Ref:6[root@openshift-comp01 ~]# vif --get 3Vrouter Interface Tablevif0/3 OS: tap233eefc1-94 Type:Virtual HWaddr:00:00:5e:00:01:00 IPaddr:5.5.5.4Vrf:2 Mcast Vrf:2 Flags:L3L2DUufEr QOS:-1 Ref:6
开了包模式后你看Flags:这个里面第一个P消失了。
Q:Tungsten Fabric目前能对接多少个OpenStack集群啊?instances.yaml配置文件中看不出可以定义多组的样子,难道是1:1然后做联盟?
杨雨:1:1。
Q:请教下,Cloudify已经比较成熟了吗?已经有一些公司在使用的成功案例吗?
杨雨:Cloudify都大改过一次了,NFV方面用来做NFVO还是比较多的,
https://www.mirantis.com/blog/which-nfv-orchestration-platform-best-review-osm-open-o-cord-cloudify/
Q:Tungsten Fabric支持vlan aware vm接入吗?
王峻:可以创建一个子接口port,测试一下。
Q:哪位专家有Tungsten Fabric体系架构文档?
陈刚:中文版本
https://tungstenfabric.github.io/website/L10N/Tungsten-Fabric-Architecture-CN.html
Q:有Tungsten Fabric源码编译成deb或rpm包的链接或文档吗?
Shuqiang:现在Tungsten Fabric直接下载image,ansible部署好之后就可以用了,都用不着编译。可以从这里下载镜像https://hub.docker.com/u/opencontrailnightly
Q:Tungsten Fabric有rest api文档吗?有没有写怎么传递参数?
Edward Ting:
http://configuration-schema-documentation.s3-website-us-west-1.amazonaws.com/R3.2/tutorial_with_rest.html 这个3.2基本类似,2005版也可以。有一些开放的库可以用,你不一定需要自己写。这个api文档里面,有一些参数,可以直接把vnc-api库拿过来用就行。
Q:阅读vRouter的代码,想分析下数据层的数据流程,有参考资料吗?
杨雨:vRouter的数据转发是在kernel层实现的,可以去GitHub搜索contrail-vrouter找到源代码。
Q:vRouter,是说的EDGE这个么?
Wenrui:EDGE是nsx里的gateway,就像Tungsten Fabric里的VMX。Tungsten Fabric在VMware环境的vRouter不是EDGE的作用,主要是用于内部VN。
Q:DLR这个是分布式路由器么?NSX-T和NSX又不一样。
Wenrui:Tungsten Fabric里的vRouter跟dlr比较像,在VMware里不太一样,是一个VM,实现方式是通过portgroup把VM的端口连到vRouter VM。
其实Tungsten Fabric和VMware环境先后有三种集成方式,vCenter as compute(contrail VM),vRO集成,CVFM(商业版),现在商业版主要是做CVFM了。
Q:Tungsten Fabric的vRouter里,vhost0.和pkt0.分别是什么作用?
钱誉:vhost0是主机操作系统和vRouter之间的Tap接口。vhost0是主机操作系统使用的第3层接口。作为设置的一部分,Tungsten Fabric软件会将IP配置从以太网端口迁移到vhost0。当主机操作系统的网络堆栈在vhost0接口上发送数据包时,它们将vRouter模块接收。vRouter依次路由数据包。当vRouter需要将数据包发送到host-os的网络堆栈时,它将通过vhost0接口进行传输。pkt0是vRouter和vrouter-agent之间的Tap接口。vRouter在该接口上捕获需要控制处理(例如流设置)的数据包。另外,当代理使用pkt0接口传输控制数据包(例如ARP)时。详细可参考:
https://sureshkvl.gitbooks.io/opencontrail-beginners-tutorial/content/introspect/contrail-vrouter-agent.html
Q:请问有vRouter详细一点的资料吗?
钱誉:
https://github.com/Juniper/contrail-controller/wiki
https://github.com/Juniper/contrail-controller/wiki/contrail-discovery-and-contrail-vrouter-agent-communication
https://subscription.packtpub.com/book/virtualization_and_cloud/9781786465993/7/ch07lvl1sec43/opencontrail-architecture
https://github.com/tnaganawa/tungstenfabric-docs/blob/master/TungstenFabricKnowledgeBase.md
Q:如果OpenStack集成了Tungsten Fabric控制器,那这个OpenStack能否通过Ironic组件部署裸机?
杨雨:可以,Contrail Command可以实现,目前开源版本还没有这个功能,得自己改。简单的描述一下:1. PXE OS Provision时,要把物理机的PXE口对应交换机的口改到Provision的虚拟机网络,完成TFTP装机;2. 装完机,把PXE口对应交换机的口改到业务虚拟网络;3. 物理机下架或维护,需要报网口切换到用于清理的虚拟网络,完成清理;OVSDB是过去时,现在是用E***-VXLAN。
Q:PXE OS Provision网络和Ironic 的tftp是怎么配置才能互通呢?
杨雨:
https://www.juniper.net/documentation/en_US/contrail19/topics/concept/how-bms-manager-works.html
Q:OpenStack project 删除了,但是Tungsten Fabric还有,就会出现错误……UI很多错误都二次封装了。导致看不到原来的错误。
Edward Ting:以前的5.1有bug,我以前也遇到过这个问题。UI界面bug很多,5.2和5.1都是有这个问题,5.1比5.2好一些,但都有些bug,得自己修。我建议不要用UI。有两个原因,第一它有很多bug,第二它没有汉化。所以用UI大家可能会浪费更多时间,倒不如自己写UI。
Q:nova_compute和nova_libvirt一直restarting,docker logs也看不到任何报错。VT-x已经开了,请问怎么排障啊?
陈刚:找到方法了,VM上systemctl disable libvirtd.service,systemctl disable dnsmasq 之后,两个docker容器就正常了。
Q:有人用vqfx遇到过这个问题吗?总是提示要登录vc-m。虚拟的还分主备引擎吗?
钱誉:用这个方法试试
https://andrewroderos.com/deploying-vqfx-on-vmware-esxi/
https://github.com/tonyliu0592/contrail/blob/master/doc/vqfx.md
Q:同网段跨节点交换mac路由吗?类似于l2vni,还是只用l3vni,同网段用arp proxy?
JianXun-KkBLuE:L3。
Q:如果路由模式,VNF可以配置一个网卡吗?还是必须left和right两个?
Wenrui:必须是两个,分别连两个VNF。路由模式VM的网关也不在VNF上。
Q:两个网卡,是不是虚拟机的两个网卡都要配置IP?
Wenrui:嗯,VNF是L2或L3都可以,但是需要连接不同子网。其实有没有地址对Tungsten Fabric来说都一样,即使是L3,业务VM的网关也不在VNF上。
Q:nat也一样,对吧?
Wenrui:nat不太一样,是用在内外网的场景。
Q:如果服务链中vnf做nat也可以实现?就是waf反向代理。
Wenrui:对,in-netwrok nat就是这种方式。
Q:宿主机有两块网卡,TF创建的几个network总是使用跟vhost一起的eth1,怎么才能让VM的两块网卡中的一个使用宿主机的eth0?
杨雨:可以看看这个
https://nicojnpr.github.io/Contrail_Cookbook/#provider-network
Q:专家们,你们怎么解决neutron l3 router的性能瓶颈?
钱誉:Tungsten Fabric的pkt0跟openflow的首包没什么关系,因为Tungsten Fabric是overlay方式,报文不需要上送控制器,另外控制器主动下发Virtual Overlay vSwitch/vRouter,依靠现有的协议来建立IP Fabric的连通性。Underlay拓扑变化不会影响overlay,Tungsten Fabric不会保留任何Overlay Per-Tenant状态信息。
Q:Tungsten Fabric支持高可用 (HA)吗?
Edward Ting:它有支持,而且很容易做。它的设计是要有三个节点,3、5、7个节点,那HA就有了。
Q:分析服务可选部署,减少占用小环境里使用不合适?
Edward Ting:
https://www.juniper.net/documentation/en_US/contrail20/information-products/pathway-pages/contrail-service-provider-feature-guide.pdf 你可以分开部署,它有个东西叫做remote computer,就是远程计算,它是把分析服务放在central office里,然后控制的服务器可以放在边缘,所以边缘的那些节点上并不需要分析服务器,你可以用运营商的 central office装分析服务器,部署,然后分析所有边缘的服务器,这样的话,比如说有1000台节点,但是你的分析服务器都在 central office里头,这样可以减少环境的一些浪费。
TF实战 Q&A丨只在此网中,云深不知处
TF实战Q&A丨你不理解透,出了问题都不知道怎么弄