請問如何在SFC入口設置多個client(namespace)?
前一個月我使用ODL官方所提供的腳本架設了一個SFC的拓樸 如下:
但因為模擬的關係需要做負載平衡 所以必須要在入口處設置五個client端 如下:
client端分別是192.168.2.51 102 153 204 254
但在新增get_service_function_classifiers_data()內的分類時出了問題,或許是格式不正確
原本的設定如下:
def get_service_function_classifiers_data():
return {
"service-function-classifiers": {
"service-function-classifier": [
{
"name": "Classifier1IP51",
"scl-service-function-forwarder": [
{
"name": "Classifier1",
"interface": "veth-br51"
}
],
"acl": {
"name": "ACL1",
"type": "ietf-access-control-list:ipv4-acl",
}
},
{
"name": "Classifier2IP51",
"scl-service-function-forwarder": [
{
"name": "Classifier2",
"interface": "veth-br"
}
],
"acl": {
"name": "ACL2",
"type": "ietf-access-control-list:ipv4-acl",
}
}
]
}
}
如果只單純修改classifier1中的interface veth-br51 改為另外四個client端的port是可以各別運行的
但如果全部統合在一起,便只有client 153可以聯通,其餘皆不通
統合在一起的設定如下:
def get_service_function_classifiers_data():
return {
"service-function-classifiers": {
"service-function-classifier": [
{
"name": "Classifier1IP51",
"scl-service-function-forwarder": [
{
"name": "Classifier1",
"interface": "veth-br51"
}
],
"acl": {
"name": "ACL1",
"type": "ietf-access-control-list:ipv4-acl",
}
},
{
"name": "Classifier2IP51",
"scl-service-function-forwarder": [
{
"name": "Classifier2",
"interface": "veth-br"
}
],
"acl": {
"name": "ACL2",
"type": "ietf-access-control-list:ipv4-acl",
}
},
{
"name": "Classifier1IP102",
"scl-service-function-forwarder": [
{
"name": "Classifier1",
"interface": "veth-br102"
}
],
"acl": {
"name": "ACL3",
"type": "ietf-access-control-list:ipv4-acl",
}
},
{
"name": "Classifier2IP102",
"scl-service-function-forwarder": [
{
"name": "Classifier2",
"interface": "veth-br"
}
],
"acl": {
"name": "ACL4",
"type": "ietf-access-control-list:ipv4-acl",
}
},
{
"name": "Classifier1IP153",
"scl-service-function-forwarder": [
{
"name": "Classifier1",
"interface": "veth-br153"
}
],
"acl": {
"name": "ACL5",
"type": "ietf-access-control-list:ipv4-acl",
}
},
{
"name": "Classifier2IP153",
"scl-service-function-forwarder": [
{
"name": "Classifier2",
"interface": "veth-br"
}
],
"acl": {
"name": "ACL6",
"type": "ietf-access-control-list:ipv4-acl",
}
},
{
"name": "Classifier1IP204",
"scl-service-function-forwarder": [
{
"name": "Classifier1",
"interface": "veth-br204"
}
],
"acl": {
"name": "ACL7",
"type": "ietf-access-control-list:ipv4-acl",
}
},
{
"name": "Classifier2IP204",
"scl-service-function-forwarder": [
{
"name": "Classifier2",
"interface": "veth-br"
}
],
"acl": {
"name": "ACL8",
"type": "ietf-access-control-list:ipv4-acl",
}
},
{
"name": "Classifier1IP254",
"scl-service-function-forwarder": [
{
"name": "Classifier1",
"interface": "veth-br254"
}
],
"acl": {
"name": "ACL9",
"type": "ietf-access-control-list:ipv4-acl",
}
},
{
"name": "Classifier2IP254",
"scl-service-function-forwarder": [
{
"name": "Classifier2",
"interface": "veth-br"
}
],
"acl": {
"name": "ACL10",
"type": "ietf-access-control-list:ipv4-acl",
}
}
]
}
}
將原本的ACL1跟ACL2,擴增到ACL1~10,也就是將veth-br51,102,153,204,254設定進去
但實際上行不通,只有詭異的153會通,已經確定各別veth-br設定是正常的,只有在統合時不正常
另外再貼上namespace的設定
if [ "${host}" == "${CLASSIFIER1_NAME}" ] ; then
#51
ip netns add app51
ip link add veth-app type veth peer name veth-br51
ovs-vsctl add-port br-sfc veth-br51
ip link set dev veth-br51 up
ip link set veth-app netns app51
ip netns exec app51 ifconfig veth-app 192.168.2.51/24 up
ip netns exec app51 ip link set dev veth-app addr 10:00:11:11:11:11
ip netns exec app51 arp -s 192.168.2.2 00:00:22:22:22:22 -i veth-app
ip netns exec app51 ip link set dev veth-app up
ip netns exec app51 ip link set dev lo up
#102
ip netns add app102
ip link add veth-app type veth peer name veth-br102
ovs-vsctl add-port br-sfc veth-br102
ip link set dev veth-br102 up
ip link set veth-app netns app102
ip netns exec app102 ifconfig veth-app 192.168.2.102/24 up
ip netns exec app102 ip link set dev veth-app addr 20:00:11:11:11:11
ip netns exec app102 arp -s 192.168.2.2 00:00:22:22:22:22 -i veth-app
ip netns exec app102 ip link set dev veth-app up
ip netns exec app102 ip link set dev lo up
#153
ip netns add app153
ip link add veth-app type veth peer name veth-br153
ovs-vsctl add-port br-sfc veth-br153
ip link set dev veth-br153 up
ip link set veth-app netns app153
ip netns exec app153 ifconfig veth-app 192.168.2.153/24 up
ip netns exec app153 ip link set dev veth-app addr 30:00:11:11:11:11
ip netns exec app153 arp -s 192.168.2.2 00:00:22:22:22:22 -i veth-app
ip netns exec app153 ip link set dev veth-app up
ip netns exec app153 ip link set dev lo up
#204
ip netns add app204
ip link add veth-app type veth peer name veth-br204
ovs-vsctl add-port br-sfc veth-br204
ip link set dev veth-br204 up
ip link set veth-app netns app204
ip netns exec app204 ifconfig veth-app 192.168.2.204/24 up
ip netns exec app204 ip link set dev veth-app addr 40:00:11:11:11:11
ip netns exec app204 arp -s 192.168.2.2 00:00:22:22:22:22 -i veth-app
ip netns exec app204 ip link set dev veth-app up
ip netns exec app204 ip link set dev lo up
#254
ip netns add app254
ip link add veth-app type veth peer name veth-br254
ovs-vsctl add-port br-sfc veth-br254
ip link set dev veth-br254 up
ip link set veth-app netns app254
ip netns exec app254 ifconfig veth-app 192.168.2.254/24 up
ip netns exec app254 ip link set dev veth-app addr 50:00:11:11:11:11
ip netns exec app254 arp -s 192.168.2.2 00:00:22:22:22:22 -i veth-app
ip netns exec app254 ip link set dev veth-app up
ip netns exec app254 ip link set dev lo up
fi
if [ "${host}" == "${CLASSIFIER2_NAME}" ] ; then
ip netns add app
ip link add veth-app type veth peer name veth-br
ovs-vsctl add-port br-sfc veth-br
ip link set dev veth-br up
ip link set veth-app netns app
ip netns exec app ifconfig veth-app 192.168.2.2/24 up
ip netns exec app ip link set dev veth-app addr 00:00:22:22:22:22
ip netns exec app arp -s 192.168.2.51 10:00:11:11:11:11 -i veth-app
ip netns exec app arp -s 192.168.2.102 20:00:11:11:11:11 -i veth-app
ip netns exec app arp -s 192.168.2.153 30:00:11:11:11:11 -i veth-app
ip netns exec app arp -s 192.168.2.204 40:00:11:11:11:11 -i veth-app
ip netns exec app arp -s 192.168.2.254 50:00:11:11:11:11 -i veth-app
ip netns exec app ip link set dev veth-app up
ip netns exec app ip link set dev lo up
ip netns exec app python3 -m http.server 80
fi
麻煩各位指點迷津
謝謝大家
1 个回复
wuc623123 - 1988
赞同来自:
另外剛剛使用GUI介面 如下:
是否代表著一個設定內是可以多個interface?
但實際設定進去,卻只接受最一個新增的資料
在這邊我疑惑了
還有一個是如果我要設定的不是interface而是bridge
那我該如何經由REST api去發設定
謝謝各位